gpt4 book ai didi

python - 如何在python中跨线程共享全局变量?

转载 作者:太空狗 更新时间:2023-10-29 20:22:06 25 4
gpt4 key购买 nike

我想使用全局变量结束在单独线程中运行的循环。但是这段代码似乎并没有停止循环中的线程。我希望该程序不再打印“。” 2 秒后,但它仍然无限期地运行。

我在这里做错了什么吗?

import time
import threading
run = True

def foo():
while run:
print '.',

t1 = threading.Thread(target=foo)
t1.run()
time.sleep(2)
run = False
print 'run=False'
while True:
pass

最佳答案

  1. 您正在通过调用 t1.run() 在主线程上执行 foo()。您应该改为调用 t1.start()

  2. 您有两个 foo() 定义 - 无关紧要,但不应该存在。

  3. 您没有将 sleep() 放入线程循环中(在 foo() 中)。这非常糟糕,因为它占用了处理器。你至少应该放 time.sleep(0)(释放时间片给其他线程),如果不能让它睡得更久的话。

这是一个工作示例:

import time
import threading
run = True

def foo():
while run:
print '.',
time.sleep(0)

t1 = threading.Thread(target=foo)
t1.start()
time.sleep(2)
run = False
print 'run=False'
while True:
pass

关于python - 如何在python中跨线程共享全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com