首頁 > 後端開發 > Python教學 > 為什麼我的 Python 執行緒在我明確啟動之前就執行了?

為什麼我的 Python 執行緒在我明確啟動之前就執行了?

Susan Sarandon
發布: 2024-11-10 08:03:02
原創
668 人瀏覽過

Why does my Python thread execute before I explicitly start it?

明確呼叫之前的執行緒執行

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板