Python에서 Bash 하위 프로세스를 사용한 병렬 처리
bash 하위 프로세스를 병렬로 실행하는 것은 스크립팅 및 자동화에서 일반적인 작업입니다. Python에서는 subprocess 모듈을 사용하여 새 프로세스를 생성하고, threading 모듈을 사용하여 이를 동시에 실행할 수 있습니다.
그러나 사용자가 연결한 질문의 첫 번째 답변에 설명된 기술은 다음을 순차적으로 실행합니다. 배쉬 프로세스. 병렬로 실행하려면 다음 접근 방식을 사용하세요.
1. multiprocessing.dummy.Pool 사용:
제한된 수의 동시 프로세스로 병렬 실행을 수행하려면 multiprocessing.dummy.Pool을 사용할 수 있습니다. multiprocessing.Pool과 유사한 스레드 기반 인터페이스를 제공합니다.
<code class="python">import multiprocessing.dummy as mp from subprocess import call pool = mp.Pool(2) # Set the maximum number of concurrent commands for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)): if returncode != 0: print("%d command failed: %d" % (i, returncode))</code>
2. 수동 동시성 제어와 함께 하위 프로세스 사용:
스레드 또는 프로세스 풀을 사용하지 않고 동시 프로세스 수를 제한할 수 있습니다.
<code class="python">from subprocess import Popen from itertools import islice max_workers = 2 processes = (Popen(cmd, shell=True) for cmd in commands) running_processes = list(islice(processes, max_workers)) while running_processes: # Check for completed processes and start new ones for i, process in enumerate(running_processes): if process.poll() is not None: running_processes[i] = next(processes, None) if running_processes[i] is None: del running_processes[i] break</code>
3. os.waitpid()와 함께 하위 프로세스 사용(Unix 전용):
Unix 시스템에서는 os.waitpid(-1, 0)를 사용하여 하위 프로세스가 종료될 때까지 차단하고 기다릴 수 있습니다. 이렇게 하면 바쁜 루프가 필요하지 않습니다.
이러한 방법은 Python을 사용하여 bash 하위 프로세스에서 동시성을 제어하기 위한 유연한 옵션을 제공합니다.
위 내용은 Python과 병렬로 Bash 하위 프로세스를 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!