Im Moment hatte ich zwei py Programme, die ich mit "python funct1.py" und "python funct2.py" starte.
Da funct2 im Prinzip eine Funktionserweiterung zu funct1 ist, liegt es nahe diese mit einem Thread innerhalb von funct1 zu starten. Eigentlich funtionoiert das auch ganz gut.
Allerdings habe ich für beide funct1/2 viele import Anweisungen "doppelt" (zB: import json). Deshalb versuchte ich diese doppelten in funct2 wegzulassen. Was zu Fehlern führt.
Kann mir jemand sagen, wo ich mich am besten schlau machen kann ob/bzw wie ich dafür vorgehen sollte. Oder muss ich die import Anweisungen in jedem Fall auch in funct2 haben?
Ich vermute ja fast, dass für "jeden" Thread die import Anweisung separat gemacht werden müssen! Richtig?
threading und import
Das hat nicht einmal etwas mit Threads zu tun. Wenn du in einem Python-Script Module verwendest, dann musst du sie dort auch importieren.gNeandr hat geschrieben:Ich vermute ja fast, dass für "jeden" Thread die import Anweisung separat gemacht werden müssen! Richtig?
Ok, knapp daneben. Aber das Module ihre eigenen import's brauchen ist verständlich. Ich hätte mir gewünscht es gäbe eine "übergeordnete" import Methode. Aber vlt. ist dieser Weg "sauberer"./me hat geschrieben: Das hat nicht einmal etwas mit Threads zu tun. Wenn du in einem Python-Script Module verwendest, dann musst du sie dort auch importieren.
Danke jedenfalls
@gNeandr: Der Weg ist sauberer, ohne Anführungsstriche. Erstens sieht man so welche Namen woher kommen, also wo man nach Dokumentation oder Definitionen suchen muss, und was sollte denn passieren wenn man zwei Module hat die den gleichen Namen definieren, welcher wäre denn dann ”übergeordnet” verfügbar? Auf diese Weise könnte ein Import irgendwo im Programm Code irgendwo ganz anders beeinflussen und kaputt machen weil der mit oder ohne den Import für einen Namen den er verwendet jeweils eine andere Definition dafür hat.
@gNeandr:
Importe in Python sind interpreterglobal, heisst ein `import bla` in verschiedenen Modulen zeigt standardmässig auf dieselbe Ressource. Zusätzlich sind Importe "Singletons", heisst ein späteres `import bla` lädt die Ressource nicht neu. Das entspricht in etwa einem "übergeordneten" Importmechanismus, nur das er vor Dir versteckt wird. Mit Threads in Python hat das alles nichts zu tun, diese laufen ja innerhalb desselben Interpreters.
Importe in Python sind interpreterglobal, heisst ein `import bla` in verschiedenen Modulen zeigt standardmässig auf dieselbe Ressource. Zusätzlich sind Importe "Singletons", heisst ein späteres `import bla` lädt die Ressource nicht neu. Das entspricht in etwa einem "übergeordneten" Importmechanismus, nur das er vor Dir versteckt wird. Mit Threads in Python hat das alles nichts zu tun, diese laufen ja innerhalb desselben Interpreters.