为什么我的计时器线程不能在 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

到CCD_ 4的顶部。照原样,因为timer()分配给x,所以x被认为是timer()的局部,其x = 1对也称为x的模块级变量没有影响。全局x永远保持为0,因此printfunction()中的while x == 0:总是成功的。它实际上与线程无关:-(

相关内容

  • 没有找到相关文章

最新更新