2017-01-17 17 views
2

Iは、2つのPythonモジュールを有する:グローバル変数

  • one.pyと、そして
  • two.py

は私がtwo.py .Script two.pyランニングでXグローバル変数を変更したいです。

sudo python two.py 

10 
10 
10 
10 

after I run one.py but no change in two.py 
:私は 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() 

コンソールを実行した後

+3

なぜ 'sudo'で' two.py'を実行しますか? –

+2

'two.py'を' one.py'とは別のPythonプロセスとして実行するので、あなたは本当にそのようなグローバル変数を変更することはできません。いくつかのプロセス間通信が必要です。 – Tagc

+0

こんにちはTagcのプロセス間通信はスレッドですか? – user7432329

答えて

1

私はone.py実行ができますが、動的をやっているtwo.py

に変化が変数を変更していない後。ファイルを書き換えません。

これは実際に何をしたいかです。今

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') 

あなたがreader.pyを実行する場合、それは出力5よ。その後、writer.pyを実行すると、何も出力されません。myfile.txtの内容全体を6に置き換えてください。そして、reader.pyを再実行すると、ファイルの内容が変更されたため、6が出力されます。これは、実行するプログラムとは異なり、ファイルの内容はプロセスに依存しないため、「静的」なので機能します。

+0

それは解決です – user7432329

+0

あなたは私の答えを受け入れることができますか? – math2001