是以我的目标是讓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()
我在do_something()函數中也有一個current_thread().ident,但似乎啟動的線程的辨別與運作python腳本的主線程相同.我認為我的方法不正确.
解決方法:
這是一個常見的,容易出錯的錯誤.
target = do_something()隻是在主線程中一次執行你的函數,并将None(你想要的函數的傳回值)作為目标函數傳遞給線程,它不會觸發任何可見的錯誤;但也沒有做任何事.
你必須傳遞實際的功能而不是結果:
t = threading.Thread(target=do_something)
會更好
标簽:python,multithreading
來源: https://codeday.me/bug/20191002/1844523.html