플랫폼에 따라, multiprocessing은 프로세스를 시작하는 세 가지 방법을 지원합니다. 이러한 시작 방법은
spawn
부모 프로세스는 깨끗한 새 파이썬 인터프리터 프로세스를 시작합니다. 자식 프로세스는 프로세스 객체의 run() 메서드를 실행하는데 필요한 자원만 상속받습니다. 특히, 부모 프로세스의 불필요한 파일 기술자와 핸들은 상속되지 않습니다. 이 방법을 사용하여 프로세스를 시작하는 것은 fork 나 forkserver 를 사용하는 것에 비해 다소 느립니다.
유닉스 및 윈도우에서 사용 가능합니다. 윈도우와 macOS의 기본값.
fork
부모 프로세스는 os.fork() 를 사용하여 파이썬 인터프리터를 포크 합니다. 자식 프로세스는, 시작될 때, 부모 프로세스와 실질적으로 같습니다. 부모의 모든 자원이 자식 프로세스에 의해 상속됩니다. 다중 스레드 프로세스를 안전하게 포크 하기 어렵다는 점에 주의하십시오.
유닉스에서만 사용 가능합니다. 유닉스의 기본값.
forkserver
프로그램이 시작되고 forkserver 시작 방법을 선택하면, 서버 프로세스가 시작됩니다. 그 이후부터, 새로운 프로세스가 필요할 때마다, 부모 프로세스는 서버에 연결하여 새로운 프로세스를 포크 하도록 요청합니다. 포크 서버 프로세스는 단일 스레드이므로 os.fork() 를 사용하는 것이 안전합니다. 불필요한 자원은 상속되지 않습니다.유닉스 파이프를 통해 파일 기술자를 전달할 수 있는 유닉스 플랫폼에서 사용할 수 있습니다.
출처 : https://docs.python.org/ko/3/library/multiprocessing.html#multiprocessing.set_start_method
'Language&Framework&Etc > Python' 카테고리의 다른 글
from win32com.shell import shellcon, shell ImportError: DLL load failed while importing shell: 지정된 프로시저를 찾을 수 없습니다. (0) | 2022.07.19 |
---|---|
@staticmethod 와 @classmethod (0) | 2022.03.07 |
사이킷런 KFold, StratifiedKFold (0) | 2022.01.20 |
파이썬 정규식 연습장 (0) | 2021.12.01 |
Visual Studio Code에서 내부 라이브러리 디버깅 하는 방법 (0) | 2021.10.25 |