我想使用全局变量结束在单独线程中运行的循环。但是这段代码似乎并没有阻止循环中的线程。我希望程序不要再打印'。' 2秒后,但它仍然无限期地运行。如何在Python中跨线程共享全局变量?
我在这里做了一些根本性的错误吗?
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
我认为他们试图表示线程正在进行不间断处理的情况,所以第3点是没有意义的。或者你是否说缺乏'time.sleep(0)'防止由于全局解释器锁定导致其他线程运行? – 2011-04-28 22:07:13
非常感谢您的答案..我得到了我的错误:) – user730094 2011-04-28 22:16:08
@Mike:我不太确定,但是,它横跨了我的脑海。话虽如此,我知道较新的Python实现已经修复了GIL的一些缺点,而我的Python版本完美地运行了这些代码,并且它不应该阻止其他线程运行。 – 2011-04-28 22:20:38