>  기사  >  백엔드 개발  >  Python과 병렬로 Bash 하위 프로세스를 실행하려면 어떻게 해야 합니까?

Python과 병렬로 Bash 하위 프로세스를 실행하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-10-27 03:00:03382검색

How Can I Execute Bash Subprocesses in Parallel with Python?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.