首頁 > 後端開發 > Python教學 > 在 Windows 上使用多處理時,為什麼我會收到「運行時錯誤:在當前進程完成引導階段之前嘗試啟動新進程」?

在 Windows 上使用多處理時,為什麼我會收到「運行時錯誤:在當前進程完成引導階段之前嘗試啟動新進程」?

Mary-Kate Olsen
發布: 2024-11-21 06:26:10
原創
618 人瀏覽過

Why am I getting

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

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