Subprocess.Popen을 사용하여 Python에서 여러 프로세스 파이핑
subprocess.Popen을 사용하여 파이프를 통해 여러 프로세스를 연결하려고 하면 작업이 다음과 같을 수 있습니다. 파이프 생성을 셸에 위임하여 단순화했습니다. 다음 Python 코드를 고려하십시오.
awk_sort = subprocess.Popen("awk -f script.awk | sort > outfile.txt", stdin=subprocess.PIPE, shell=True) awk_sort.communicate(b"input data\n")
이 예에서 셸은 awk 및 sort 프로세스를 파이프라인과 연결하는 역할을 담당합니다. 이렇게 하면 여러 하위 프로세스와 파이프를 직접 관리할 필요가 없어집니다.
외부 도구의 필요성 제거
그러나 일부 전문가가 제안하는 것처럼 외부 도구를 사용하지 않는 것이 유리한 경우가 많습니다. awk와 같은 도구. Python으로 스크립트를 다시 작성하면 성능을 향상하고 파이프라인에 내재된 복잡성을 제거할 수 있습니다. 예:
import subprocess p = subprocess.Popen("sort", stdin=subprocess.PIPE, stdout=open("outfile.txt", "w")) p.communicate(b"input data\n")
이 Python 기본 스크립트는 파이프라인이나 외부 명령 없이도 동일한 기능을 달성합니다. 코드를 단순화하면 오류와 모호성이 발생할 가능성이 줄어듭니다.
파이프라인을 피하는 이유
파이프라이닝은 특정 시나리오에서 성능 이점을 제공할 수 있지만 종종 불필요한 추가를 추가합니다. 코드의 복잡성. 파이프라이닝을 피해야 하는 몇 가지 이유는 다음과 같습니다.
결론
파이프라인을 셸에 위임하면 셸이 파이프 생성 프로세스를 처리하도록 허용하여 코드를 단순화할 수 있습니다. 그러나 현재 작업에 외부 도구와 파이프라이닝이 필요한지 신중하게 고려하는 것이 중요합니다. 많은 경우 파이프라인과 외부 도구를 제거하면 코드 단순성과 성능이 향상될 수 있습니다.
위 내용은 다중 프로세스 작업을 위해 셸 파이프라이닝이나 기본 Python을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!