Windows에서 멀티프로세싱을 사용할 때 '런타임 오류: 현재 프로세스가 부트스트래핑 단계를 완료하기 전에 새 프로세스를 시작하려고 합니다'라는 메시지가 나타나는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-21 06:26:10
원래의
546명이 탐색했습니다.

Why am I getting

Windows 다중 처리 오류: RuntimeError

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()
로그인 후 복사

이 오류를 해결하려면 , if __name__ ==를 포함하도록 testMain.py 스크립트를 수정합니다. '__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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿