我正在做一个简单的项目来学习线程,这是我的代码:
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:
总是成功的。它实际上与线程无关:-(