使用Python 多處理時修復Windows 上的運行時錯誤
如果主模組不正確,Python 多處理可能會在Windows 系統上遇到「運行時錯誤」配置。錯誤訊息通常建議使用“freeze_support()”函數來修正此問題。然而,讓我們深入研究一個特定的場景,其中線程在單獨的模組中管理,導致相同的錯誤。
程式碼涉及一個主模組(“testMain.py”),它導入模組處理程序並執行緒(“parallelTestModule.py”)並呼叫其“runInParallel”方法。在「parallelTestModule.py」中,進程在「ParallelExtractor」類別中定義,該類別使用「multiprocessing」模組中的「Process」類別初始化進程。
問題的癥結在於缺乏主模組(「testMain.py」)中的「if name == '__main__':」守衛。此防護確保子程序不會遞歸地導入主模組。在 Windows 上執行時,子程序會在開始時執行主模組,導致遞歸迴圈。
要解決此問題,您需要在主模組(“testMain.py”)中插入此守衛:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
通過此修改,僅當程式直接運行時主模組才會充當入口點,防止子程序的遞歸執行並允許多處理在Windows 上正確運行。
以上是當在單獨的模組中管理執行緒時,為什麼 Python 多處理會在 Windows 上導致執行時期錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!