为什么我的计时器线程 运行 不在 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() 分配给 xx 被认为是 timer() 的局部变量,并且它的 x = 1 对模块级变量没有影响也命名为 x。全局 x 永远保持为 0,因此 printfunction() 中的 while x == 0: 总是成功。它真的与线程无关:-)