Servus,
ich programmiere gerade an einem Modul und zeitgleich wird dies von einem anderen Skript eingebunden, kann es da zu Problemen kommen?
Also: meinmodul.py habe ich im Editor offen und starte die Datei meinmodultest.py, das läuft schnell durch und ich starte es ab und an. Zeitgleich läuft das Skript 'meinlanglaufendesskript.py'. Alle beiden Datei importieren und brauchen meinmodul.py(c). Jetzt liegt im gleichen Verzeichnis ja immer die Datei meinmodul.pyc.
Ich durchblicke nicht die genauen Abläufe, wie der import- und build-Prozess abläuft, aber kann es sein, dass wenn ich meinmodul.py speichere oder meinmodultest.py starte, die pyc-Datei auch neu erstellt wird und es dann ggf. zu Problemen kommt? Oder ist es so, dass für pyc-Dateien immer nur der Skriptstart der importierenden Datei zählt und dann alles nur noch im Arbeitsspeicher liegt und Änderungen in der Datei auf der Festplatte nichts ausmachen?
Am Modul schrauben und gleichzeitig laufen lassen
Letzteres. Einmal importiert reicht. Ausser du machst bewusst was anderes, also Zeitstempel pruefen und reload aufrufen und was weis ich. Aber das Standardverhalten ist so, wie von dir beschrieben - nach erstem import ist alles fix.
Der pyc-Datei selbst dürfte das ziemlich egal sein, wann sie von wem verwendet wird. Entscheidend ist das ja eigentlich nur für den eigentlichen Import-Mechanismus. Meines Wissens wird bei jedem Import geprüft, ob die zum Modulnamen gehörige py-Datei jünger als die pyc-Datei ist. Falls ja, wurde das Skript verändert und es wird neu kompiliert, ansonsten wird direkt die pyc-Datei verwendet. Eine pyc-Datei, die bereits in Verwendung ist, befindet sich höchstwahrscheinlich im Arbeitsspeicher, so dass erneutes Kompilieren durch spätere Importe keinen Einfluss darauf haben. Das weiß ich nicht mit 100%iger Sicherheit, würde aber mal stark davon ausgehen wollen.Jochen1980 hat geschrieben:Oder ist es so, dass für pyc-Dateien immer nur der Skriptstart der importierenden Datei zählt und dann alles nur noch im Arbeitsspeicher liegt und Änderungen in der Datei auf der Festplatte nichts ausmachen?