简体   繁体   English

在另一个线程中更改Python中的全局变量

[英]Change global variable in Python in another thread

I want change global variable in module1.py by module2.py. 我想通过module2.py更改module1.py中的全局变量。

module1.py module1.py

#!/usr/bin/env python
import threading
import module2  as module22
import time

values=True

def main():
 print "m"


def thread():
 while(values):
  print "moduel1"
  time.sleep(0.50)
 print "END PROGRAM"

def change():
 print "change"
 values=False

if __name__ == "__main__":

 t2=threading.Thread(target=module22.main())
 t1=threading.Thread(target=thread())



 t1.start()
 t2.start()


 t1.join()
 t2.join()

module2.py module2.py

#!/usr/bin/env python
import module1 as module11


def main():
 print "module2"

 module11.change()


if __name__ == "__main__":
  main()

When I run sudo python module1.py: 当我运行sudo python module1.py时:

Result is here 结果在这里

module2
change
moduel1
moduel1..

I want get result 我想要结果

 module2
 change
 END PROGRAM

You need to declare values as global, if you dont do this, the variable is handled as new local variable. 您需要将值声明为全局值,如果不这样做,则该变量将作为新的局部变量处理。

def change():
  global values
  print "change"
  values=False

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM