繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM