我想使用全局變量結束在單獨線程中運行的循環。但是這段代碼似乎並沒有阻止循環中的線程。我希望程序不要再打印'。' 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