2017-01-17 5 views
2

ich zwei Python-Module haben:Globale Variable in Python Quer Modul

  • one.py; und
  • two.py

Ich möchte X globale Variable in two.py .script two.py Lauf ändern. Nachdem ich laufen one.py

one.py

#!/usr/bin/env python 

import two 

def main(): 
two.function("20") 

if __name__=="__main__": 
    main() 

two.py

#!/usr/bin/env python 

X="10" 
def main(): 
while True: 
    function() 
time.sleep(0.25) 

def function(input="00"): 
if(input!="00"): 
     global X 
     X=input 
     print "change" 

print X 
if __name__=="__main__": 
    main() 

Konsole:

sudo python two.py 

10 
10 
10 
10 

after I run one.py but no change in two.py 
+3

Warum führen Sie 'two.py' mit' sudo' aus? –

+2

Nun, Sie werden 'two.py' als separaten Python-Prozess ausführen als' one.py', so dass Sie globale Variablen nicht wirklich ändern können. Sie benötigen eine Art Interprozesskommunikation. – Tagc

+0

Hallo Tagc Interprozesskommunikation ist Thread? – user7432329

Antwort

1

nachdem ich laufen one.py aber keine Änderung in two.py

Was Sie dynamisch die Variablen ändert tun. Es schreibt die Dateien nicht neu.

Welches ist eigentlich, was Sie tun möchten.

myfile.txt

5 

reader.py

with open('myfile.txt', 'r') as fp: 
    nb = int(fp.read()) 
    print(nb) 

writer.py

with open('myfile.txt', 'w') as fp: 
    fp.write('6') 

Nun, wenn Sie reader.py laufen, wird es ausgegeben 5. Wenn Sie dann writer.py ausführen, wird nichts ausgegeben, ersetzen Sie einfach den gesamten Inhalt von myfile.txt durch 6. Und dann, wiederholen Sie reader.py, es wird 6 ausgegeben, weil der Inhalt der Datei geändert wird. Es funktioniert, weil der Inhalt der Dateien im Gegensatz zu Ihrem Programm nicht von einem Prozess abhängt, sondern "statisch".

+0

Es ist Lösungen Danke – user7432329

+0

Können Sie meine Antwort dann bitte annehmen? – math2001