明確呼叫之前的執行緒執行
Python 的多執行緒模組允許使用 Thread 物件並行執行程式碼。但是,在建立和配置執行緒時可能會出現異常行為。
將函數傳遞給帶有尾隨括號的執行緒目標參數時會出現問題,如下所示:
t1 = threading.Thread(target=self.read())
此行為源自於這樣的誤解:呼叫target=self.read () 會將self.read() 的運行分配給執行緒。不幸的是,這是不正確的。透過附加括號,函數將立即被調用,並且其返回值將被指定為目標。對於 Thread 對象,它期望接收一個函數作為目標。
要解決此問題,只需從目標參數中刪除括號並明確調用線程的start() 方法:
t1 = threading.Thread(target=self.read) t1.start()
現在,self.read() 將在新創建的線程中無限期地運行,允許程式繼續並列印“某些內容”。此修改可確保函數被正確指定為目標並且不會過早執行。
以上是為什麼我的 Python 執行緒在我明確啟動之前就執行了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!