2016-12-02 1 views
-1

Ich habe eine Python-Datei, die auf einer Schleife läuft, die eine geschätzte Zeit ausgibt, damit etwas passieren kann. Ich möchte eine andere Python-Datei nur importieren und ausdrucken! exampel.Importieren von JUST-Variablen aus laufender Datei (Python)

#loop.py 
import datetime 
import time 
while 1: 
    moment = datetime.datetime.now() 
    next_moment = datetime.datetime.now() + datetime.timedelta(minutes = 10) 
    time.sleep(50) 

#Print.py 
import datetime 
from loop import moment, next_moment 
print moment 
print next_moment 
print "Exit" 

Aber wenn ich Print.py Führen Sie es tut nichts (es sollte "Exit" Recht sagen?)

Und wenn ich das skript Abbrechen heißt es:

^CTraceback (most recent call last): 
    File "print.py", line 2, in <module> 
    from loop import moment, next_moment 
    File "/home/pi/Programming/Tests/loop.py", line 8, in <module> 
    time.sleep(50) 
KeyboardInterrupt 

Also ich denke, durch den Import der Scripting loop.py wird es auch ausgeführt. Gibt es jetzt eine Möglichkeit für mich, die Variablen einfach aus dieser Schleife zu entfernen?

Danke für jede Antwort!

+0

Zu Ihrer Beobachtung über das Modul, das beim Import ausgeführt wird, siehe [hier] (http://stackoverflow.com/questions/6523791/why-is-python-running-my-module-when-i-import-it -und-wie-do-i-stop-it). Warum solltest du versuchen, Dinge aus einer Schleife zu entfernen, die in einem anderen Modul läuft? – roganjosh

Antwort

1

Ihr Ansatz funktioniert nicht, da es sich bei loop.py und print.py um unterschiedliche Prozesse handelt. Sie wollen Interprozesskommunikation. Beim Import in Python geht es nicht um den Zugriff auf Daten von anderen Prozessen, sondern darum, Code aus Dateien in Ihren Prozess zu laden. Sie können keine Daten lesen, die zu einem anderen Prozess gehören, es sei denn, dieser Prozess wird auf eine bestimmte Weise verfügbar gemacht oder Sie debuggen ihn.

Eine der möglichen Lösungen für Ihr Problem ist es, einen Socket in loop.py zu öffnen und dort auf Anfragen zu warten. print.py stellt dann eine Verbindung zum Socket her, sendet eine Anfrage, empfängt eine Antwort mit dem aktuellen Status und druckt sie aus.

+0

Ok danke. Ich dachte, weil es sagt "von scrypt import x, y ..." war es wichtig, nur diese Variablen zu importieren. Ich werde die Interprozesskommunikation prüfen! –

Verwandte Themen