所以我的目標是讓do_something()
函數啓動自己的線程,以便do_something()
可以並行運行,而不必等待前一個線程完成。問題是它看起來好像不是多線程(意味着一個線程在另一個線程開始之前完成)。同時運行多個線程
for i in range(len(array_of_letters)):
if i == "a":
t = threading.Thread(target=do_something())
print "new thread started : %s"%(str(threading.current_thread().ident))
t.start()
我也有一個current_thread().ident
的do_something()
函數內,但它似乎是一種開始是一樣的Python腳本從運行主線程的線程的身份。我認爲我的方法是不正確的。
@讓·弗朗索瓦·法布爾是正確的,我相信,對眼前的問題。即使修復了這些,你也應該知道,在Python中,線程並不真正運行,因爲大部分Python解釋器不能同時解釋兩個或更多不同的執行線程(並且有一些稱爲GIL (全局解釋器鎖)來阻止它,相反,它會運行一個線程,直到它阻塞等待共享資源,I/O或調用sleep(),然後才切換到運行另一個線程(如果有的話) – martineau