Python 2.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법
개요:
Python 개발에서는 프로그램에서 다른 외부 명령이나 프로그램을 호출해야 하는 경우가 있습니다. 서브프로세스 모듈은 파이썬에서 제공하는 표준 라이브러리로, 서브프로세스를 쉽게 생성하고 통신할 수 있습니다. 이 기사에서는 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법을 소개하고 코드 예제를 통해 설명합니다.
subprocess.Popen()
으로, 새 프로세스를 시작하고 Popen 개체를 반환할 수 있습니다. 하위 프로세스를 생성하기 위해 Popen()
함수를 사용하는 기본 구문은 다음과 같습니다. subprocess.Popen()
,它能够启动一个新进程并返回一个Popen对象。使用Popen()
函数创建子进程的基本语法如下:import subprocess subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
参数说明:
示例代码1:启动一个子进程并执行命令,然后获取子进程的输出结果。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) output, _ = p.communicate() print(output)
Popen()
函数的stdin、stdout、stderr参数来指定子进程的输入输出。如果不指定这些参数,默认会创建一个新的管道并通过Popen对象的属性来读写。示例代码2:启动一个子进程并通过管道进行输入、输出。
import subprocess cmd = "grep -E 'a|b|c'" p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) input_data = "abcdefg hijklmnop qrstuvwxyz " output, _ = p.communicate(input_data) print(output)
示例代码3:启动一个子进程并重定向输出到文件中。
import subprocess cmd = "grep -E 'a|b|c' input.txt > output.txt" subprocess.Popen(cmd, shell=True)
Popen()
函数会立即返回一个Popen对象,而不会等待子进程执行完毕。如果我们需要等待子进程执行完毕后再进行下一步操作,可以使用Popen()
对象的wait()
方法。示例代码4:启动一个子进程并等待其执行完毕。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() print("子进程执行完毕")
Popen()
对象的returncode
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() if p.returncode == 0: print("子进程执行成功") else: print("子进程执行失败")
bufsize : 입력 및 출력 제어 버퍼 크기의 매개 변수, 0은 버퍼링 없음, 1은 라인 버퍼링, 기타 양수는 버퍼 크기를 나타냅니다.
executable: 실행 파일의 경로, 시스템 PATH 환경 변수의 검색 경로가 사용됩니다. 기본적으로
🎜stdin: 하위 프로세스 입력 스트림의 표준, 기본값은 PIPE이며 Popen 객체의 stdin 속성을 통해 입력됩니다. 🎜🎜stdout: 하위 프로세스의 표준 출력 스트림으로 기본값은 PIPE입니다. 이는 Popen 객체의 stdout 속성을 통해 출력됩니다. 🎜🎜stderr: 하위 프로세스의 표준 오류 스트림, 기본값은 Popen 객체의 stderr 속성을 통해 출력되는 PIPE입니다. 🎜🎜preexec_fn: 실행 가능한 객체입니다. 하위 프로세스가 시작되기 전에 호출됩니다. 🎜🎜close_fds: 더 이상 필요하지 않은 파일 설명자를 닫을지 여부, 기본값은 False🎜🎜 셸: 셸을 통해 명령 구문 분석을 수행할지 여부, 기본값은 False 🎜🎜cwd: 작업 디렉토리, 기본값은 None 🎜🎜env: 환경 변수, 기본값은 None, 즉 상위 프로세스의 환경 변수가 사용됩니다. 🎜🎜universal_newlines: 입력 및 출력을 텍스트 모드로 변환할지 여부를 제어하며 기본값은 False🎜🎜startupinfo: 하위 프로세스의 시작 정보, 기본값은 None🎜🎜creationflags: 하위 프로세스의 생성 플래그, 기본값은 0🎜Popen()의 stdin, stdout 및 stderr 매개변수를 통해 하위 프로세스를 지정할 수 있습니다.
함수 입력 출력. 이러한 매개변수를 지정하지 않으면 기본적으로 새 파이프가 생성되고 Popen 개체의 속성을 통해 읽고 쓰여집니다. 🎜🎜🎜샘플 코드 2: 하위 프로세스를 시작하고 파이프를 통해 입력 및 출력을 수행합니다. 🎜rrreee🎜샘플 코드 3: 하위 프로세스를 시작하고 출력을 파일로 리디렉션합니다. 🎜rrreeePopen()
함수는 Popen을 반환합니다. 자식 프로세스가 실행을 완료할 때까지 기다리는 대신 즉시 개체를 생성합니다. 다음 단계로 진행하기 전에 하위 프로세스의 실행이 완료될 때까지 기다려야 하는 경우 Popen()
개체의 wait()
메서드를 사용할 수 있습니다. 🎜🎜🎜샘플 코드 4: 하위 프로세스를 시작하고 실행이 완료될 때까지 기다립니다. 🎜rrreeePopen()
객체의 returncode
속성을 사용하여 하위 프로세스의 종료 상태 코드를 얻을 수 있습니다. 0이면 실행이 성공한 것입니다. 🎜🎜🎜샘플 코드 5: 하위 프로세스의 종료 상태 코드를 가져옵니다. 🎜rrreee🎜요약: 🎜subprocess 모듈을 통해 Python 프로그램에서 쉽게 하위 프로세스를 만들고 프로세스를 관리할 수 있습니다. 구체적인 작업 방법에는 자식 프로세스 생성, 자식 프로세스의 입력 및 출력 제어, 자식 프로세스 종료 대기, 자식 프로세스의 종료 상태 코드 캡처 등이 포함됩니다. 이 지식을 익히면 하위 프로세스 관리를 위해 Python을 더 잘 활용하고 프로그램의 유연성과 확장성을 향상시킬 수 있습니다. 🎜🎜위 내용은 Python 2.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 것과 관련된 내용입니다. 도움이 되었기를 바랍니다. 🎜위 내용은 Python 2.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!