[英]Why doesn't my timer thread run in python?
我正在制作一个简单的项目来学习线程,这是我的代码:
import time
import threading
x = 0
def printfunction():
while x == 0:
print("process running")
def timer(delay):
while True:
time.sleep(delay)
break
x = 1
return x
t1 = threading.Thread(target = timer,args=[3])
t2 = threading.Thread(target = printfunction)
t1.start()
t2.start()
t1.join()
t2.join()
它应该只打印出在控制台process running
,但它永远不会停止打印。 控制台没有显示任何错误,我尝试缩短时间,看看我是否等待的时间不够长,但它仍然不起作用。 然后我尝试删除t1.join()
和t2.join()
但我仍然没有运气,程序继续运行。
我究竟做错了什么?
添加
global x
到timer()
的顶部。 因为timer()
分配给x
,所以x
被认为是timer()
的局部变量,并且它的x = 1
对也名为x
的模块级变量没有影响。 全局x
永远保持为 0,因此printfunction()
中的while x == 0:
总是成功。 它真的与线程无关:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.