在另一个线程中更改Python中的全局变量 [英] Change global variable in Python in another thread

查看:685
本文介绍了在另一个线程中更改Python中的全局变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过module2.py更改module1.py中的全局变量.

I want change global variable in module1.py by module2.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

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


def main():
 print "module2"

 module11.change()


if __name__ == "__main__":
  main()

当我运行sudo python module1.py时:

When I run 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

这篇关于在另一个线程中更改Python中的全局变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆