Windows 上的Python 多處理中的執行時間錯誤
在Windows 作業系統上執行多處理程式碼時,您可能會遇到以下錯誤訊息:
RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase. This probably means that you are on Windows and you have forgotten to use the proper idiom in the main module: if __name__ == '__main__': freeze_support() ... The "freeze_support()" line can be omitted if the program is not going to be frozen to produce a Windows executable.
錯誤原因
在 Windows 中,透過多處理模組建立的子程序將繼承主程序的環境。當子進程啟動時,它將嘗試導入主模組,這可能導致程式碼的遞歸執行。為了防止這種情況,您需要在主模組中加入 if __name__ == '__main__' 保護。
解
要解決此問題,請修改主模組如下:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
說明
說明 if __name__ == '__main__' 條件檢查程式碼是否直接從主模組執行。如果滿足此條件,則表示該腳本沒有被其他模組匯入。在這種情況下,您可以安全地在主模組中建立子流程,因為它確保程式碼不會遞歸執行。以上是為什麼在 Windows 上的 Python 中使用多重處理時會出現「運行時錯誤:嘗試啟動新進程...」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!