我正在嘗試在我正在使用的Python項目中使用線程,但線程似乎沒有像我應該在代碼中那樣工作。看來所有線程都按順序運行(即線程2在線程1結束後開始,它們不會同時啓動)。我編寫了一個簡單的腳本來測試它,並且它也按順序運行線程。Python線程似乎按順序運行線程
import threading
def something():
for i in xrange(10):
print "Hello"
def my_thing():
for i in xrange(10):
print "world"
threading.Thread(target=something).start()
threading.Thread(target=my_thing).start()
這裏的輸出我從運行它獲得:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
world
world
world
world
world
world
world
world
world
world
同樣的行爲與更大的循環迭代次數觀察。
我試着搜索網頁和較老的答案,但我找不到任何有幫助的東西。 有人可以指出這段代碼有什麼問題嗎?
相同的行爲10000次迭代 – MAK 2009-11-09 05:26:44
在我正在處理的實際項目中,其中一個線程是一個無限循環,用於偵聽消息並將回調函數稱爲他們到了。它只是阻止所有其他線程。不幸的是,實際的循環代碼不能被修改(我只是在線程中調用一個類的run()方法)。 – MAK 2009-11-09 05:31:00
當我像這樣運行腳本時:'./pythr.py | uniq -c'我得到:8969你好| 1你好world | 6626世界| 1 | 3373世界| 1030你好。所以它確實改變了控制權 - 只是沒有那麼經常...... – viraptor 2009-11-09 09:33:43