2017-01-17 228 views
2

我有两个Python模块:全局变量

  • one.py;和
  • two.py

我想改变X全局变量two.py .Script 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() 

控制台:

sudo python two.py 

10 
10 
10 
10 

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

为什么你用'sudo'运行'two.py'? –

+2

那么你将'two.py'作为一个单独的Python进程运行而不是'one.py',所以你不能真正改变这样的全局变量。你需要某种进程间通信。 – Tagc

+0

Hi 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