Seite 1 von 1

threading und import

Verfasst: Donnerstag 27. November 2014, 14:41
von gNeandr
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? :?:

Re: threading und import

Verfasst: Donnerstag 27. November 2014, 14:47
von /me
gNeandr hat geschrieben:Ich vermute ja fast, dass für "jeden" Thread die import Anweisung separat gemacht werden müssen! Richtig? :?:
Das hat nicht einmal etwas mit Threads zu tun. Wenn du in einem Python-Script Module verwendest, dann musst du sie dort auch importieren.

Re: threading und import

Verfasst: Donnerstag 27. November 2014, 14:53
von gNeandr
/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.
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".

Danke jedenfalls :)

Re: threading und import

Verfasst: Donnerstag 27. November 2014, 15:47
von /me
Ein import in Python ist halt nicht das gleiche wie ein include in PHP. Das include kopiert wirklich den Code an die angegebene Stelle, das import erstellt eine Referenz in der internen Symboltabelle.

Re: threading und import

Verfasst: Donnerstag 27. November 2014, 15:54
von BlackJack
@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.

Re: threading und import

Verfasst: Donnerstag 27. November 2014, 16:00
von jerch
@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.