为什么我的计时器线程 运行 不在 python 中?
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:
总是成功。它真的与线程无关:-)
我正在做一个简单的项目来学习线程,这是我的代码:
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:
总是成功。它真的与线程无关:-)