간단한 Python 루프 병렬화
CPython의 전역 인터프리터 잠금(GIL)은 여러 스레드에 의한 Python 코드의 동시 실행을 방지합니다. 따라서 프로세스를 활용하는 것은 샘플 루프에 표시된 것과 같은 CPU 바인딩된 워크로드에 더 효과적입니다.
Python 표준 라이브러리는 프로세스 풀을 생성하는 두 가지 간단한 방법을 제공합니다.
1 . 다중 처리 모듈:
pool = multiprocessing.Pool(4) out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
2. 병행.futures.ProcessPoolExecutor:
with concurrent.futures.ProcessPoolExecutor() as pool: out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
두 방법 중 하나를 사용하면 calc_stuff 함수가 병렬로 실행되고 결과가 출력 목록 out1, out2 및 out3에 수집됩니다. 이 접근 방식은 계산을 효과적으로 병렬화하고 시스템의 여러 프로세서를 활용합니다.
위 내용은 GIL 제한을 극복하기 위해 간단한 Python 루프를 어떻게 병렬화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!