Windows 多重處理錯誤:執行時間錯誤
嘗試在Windows 上使用多重處理時,使用者可能會遇到以下錯誤:
RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase.
出現此錯誤是因為Windows 子程序在初始化時會導入主模組,可能會導致遞歸子程序建立。為了避免這種情況,在主模組中包含 if __name__ == '__main__': 保護至關重要。這可以防止在主模組內建立子程序。
請考慮以下程式碼片段,它示範了這個問題:
testMain.py:
import parallelTestModule extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
parallelTestModule.py:
import multiprocessing from multiprocessing import Process class ParallelExtractor: def runInParallel(self, numProcesses, numThreads): myprocs = [] for pid in range(numProcesses): pr = Process(target=self.runp, args=(pid, numThreads)) myprocs.append(pr) for i in myprocs: i.start() for i in myprocs: i.join()
要解決此錯誤,請修改testMain.py 腳本以包含if __name__ == '__main__':guard:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4) 此修改可確保子程序不會遞歸創建,從而解決了Windows計算機上的 RuntimeError。以上是在 Windows 上使用多處理時,為什麼我會收到「運行時錯誤:在當前進程完成引導階段之前嘗試啟動新進程」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!