为什么';我的计时器线程不能在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:
始终成功。这真的与线程无关:-)

非常感谢!