In Ihrem Beispiel wird das erste Skript bis zum Ende ausgeführt und dann wird das zweite Skript ausgeführt. Das bedeutet, dass Sie eine Art dauerhaften Zustand benötigen. Andere Antworten haben die Verwendung von Textdateien oder Python's pickle
Modul. Ich persönlich bin faul und würde keine Textdatei verwenden, wenn ich auch mit pickle
Warum sollte ich einen Parser schreiben, um mein eigenes Textdateiformat zu parsen?
Anstelle von pickle
können Sie auch die json
Modul, um sie als JSON zu speichern. Dies könnte vorzuziehen sein, wenn Sie die Daten an Nicht-Python-Programme weitergeben wollen, da JSON ein einfacher und gängiger Standard ist. Wenn Ihr Python nicht über json
erhalten simplejson .
Wenn Ihr Bedarf über die pickle
o json
-- sagen wir mal, Sie wollen zwei Python-Programme gleichzeitig ausführen und die persistenten Zustandsvariablen in Echtzeit aktualisieren -- ich schlage vor, Sie verwenden die SQLite Datenbank. Verwenden Sie ein ORM, um die Datenbank zu abstrahieren, und es ist super einfach. Für SQLite und Python empfehle ich Herbst ORM .
7 Stimmen
Meinen Sie, dass Sie einen Wert in zwei völlig getrennten Python-Sitzungen gemeinsam nutzen wollen? Wenn ja, ist das nicht möglich, indem Sie einfach einen Wert in einem gemeinsamen Modul setzen.
0 Stimmen
Ich danke Ihnen. Im Moment bin ich dabei, ein drittes Modul zu erstellen, das beide importiert, so dass alles in der gleichen Sitzung geschieht. Die Pickle-Lösung funktioniert nicht ganz für mich, weil ich eine threading.Condition()-Variable in einem Modul setzen wollte (die wegen der impliziten Sperre nicht gepickt werden kann) und sie von beiden Sitzungen aus verwenden wollte. Und jetzt, wo ich darüber nachdenke, ist die Möglichkeit, die Variable gemeinsam zu nutzen, wahrscheinlich das geringste meiner Probleme, da ich nicht glaube, dass der Zustand in der Bedingungsvariable gemeinsam genutzt werden wird.
0 Stimmen
Ich bin auf diese Frage gekommen, als ich das gleiche Problem hatte. Dann habe ich über Steckdosen gelesen. Warum sollte man sie nicht verwenden?