python线程为什么我只能在线程外使用全局变量

2024-04-25 20:26:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在线程外使用一个变量。在本例中,我希望程序每次运行“update()”后都打印“a”。我得到了“a”打印一次,但就是这样,我可以看到“更新”打印每一秒,所以我知道我的线程运行正常,但我根本无法得到什么在线程了。为什么?你知道吗

import threading

a = 1

def update():
 global a
 a += 1
 print ("updating")
 threading.Timer(1, update).start()

update()
print(a)

我看到一些代码在线程本身之外启动线程:

def update():
 global a
 a += 1
 print ("updating")

threading.Timer(1, update).start()
update()

但我试过了,对我来说不管用。我只打印了两次“更新”。我认为它应该在函数中,这样就可以在每次调用结束时重新启动线程。对的?你知道吗

还是我没有正确声明变量?你知道吗


Tags: 函数代码import程序defupdate线程global
1条回答
网友
1楼 · 发布于 2024-04-25 20:26:49

在第一段代码中,只打印一次a的值。但是,您的线程会继续更新它。你知道吗

不要只在代码末尾print(a),请尝试在循环中打印a,如下所示:

import threading,time

a = 1

def update():
    global a
    a += 1
    print ("updating")
    threading.Timer(1, update).start()

update()
while True:
    time.sleep(5)
    print(a)

当您这样做时,您将看到a正在更新,并且您可以在线程之外访问它的值。你知道吗

相关问题 更多 >