为什么';我的计时器线程不能在python中运行吗?
我正在做一个简单的项目来学习线程,下面是我的代码:为什么';我的计时器线程不能在python中运行吗?,python,multithreading,time,python-multiprocessing,python-multithreading,Python,Multithreading,Time,Python Multiprocessing,Python Multithreading,我正在做一个简单的项目来学习线程,下面是我的代码: 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 =
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()
它应该只打印出在控制台中运行的进程
三秒钟,但它从不停止打印。控制台没有显示任何错误,我尝试缩短时间,看看是否等待的时间不够长,但仍然无法工作。然后我试图删除t1.join()
和t2.join()
,但是我仍然没有运气,程序继续运行
我做错了什么?添加
global x
到
计时器()的顶部
。同样,由于timer()
分配给x
,x
被认为是timer()
的本地变量,其x=1
对也被命名为x
的模块级变量没有影响。全局x
永远保持为0,因此printfunction()
中的while x==0:
始终成功。这真的与线程无关:-)非常感谢!