Python 3.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법
소개:
Python 프로그래밍에서는 시스템 명령 실행, 다른 응용 프로그램 시작, 다른 스크립트 호출 등 외부 명령이나 프로그램과 상호 작용해야 하는 경우가 많습니다. 하위 프로세스 관리는 Python 프로그램에서 하위 프로세스를 생성, 제어 및 통신하는 작업을 나타냅니다. Python은 강력하고 유연한 도구인 하위 프로세스 관리를 처리하는 하위 프로세스 모듈을 제공합니다. 이 기사에서는 하위 프로세스 모듈을 사용하여 하위 프로세스를 생성, 제어 및 통신하는 방법을 소개합니다.
1. 서브 프로세스 생성
subprocess 모듈을 사용하여 서브 프로세스를 생성하는 것은 매우 간단합니다. Popen 클래스의 생성자를 직접 호출하여 서브 프로세스 객체를 생성할 수 있습니다. 다음은 간단한 샘플 코드입니다.
import subprocess # 执行一个系统命令,输出结果到标准输出 subprocess.Popen(["ls", "-l"])
이 예제에서는 Popen 클래스의 생성자 메서드를 사용하여 하위 프로세스 개체를 생성합니다. 전달된 매개 변수는 목록이고 목록의 첫 번째 요소는 수행할 명령입니다. 다음 요소는 명령의 매개변수입니다. 위 코드는 시스템 명령 ls -l
을 실행하고 결과를 표준 출력으로 출력합니다. ls -l
,并将结果输出到标准输出。
除了上述的方式外,我们还可以通过在创建子进程对象时指定参数 shell=True
来执行 Shell 命令。示例代码如下:
import subprocess # 执行一个 Shell 命令 subprocess.Popen("ls -l", shell=True)
在上述代码中,我们将Shell命令 "ls -l"
作为参数传给 Popen 类的构造方法,并通过参数 shell=True
来执行 Shell 命令。
二、子进程的控制
在子进程创建成功后,我们可以使用子进程对象的各种方法来控制子进程的行为。下面是一些常用的方法:
下面是一个示例代码,在子进程结束时获取输出结果并输出:
import subprocess # 执行一个系统命令,获取输出结果 p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE) output, error = p.communicate() print(output.decode("utf-8"))
在上述代码中,我们使用 communicate()
方法与子进程进行交互,获取子进程的输出结果并赋值给变量 output
。接着使用 decode("utf-8")
方法将二进制字符串转换为 UTF-8 编码的字符串,并打印输出。
三、子进程的通信
使用 communicate()
方法可以很方便地与子进程进行通信,不仅可以发送数据给子进程,还可以接收子进程的输出结果。下面是一个示例代码:
import subprocess # 执行一个命令并接收子进程的输出 p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE) output, error = p.communicate() print(output.decode("utf-8")) # 向子进程发送数据并接收输出结果 p = subprocess.Popen(["grep", "example"], stdout=subprocess.PIPE, stdin=subprocess.PIPE) input_data = "This is an example" output, error = p.communicate(input=input_data.encode("utf-8")) print(output.decode("utf-8"))
在上述代码中,我们首先创建一个子进程对象 p
,执行命令 ls -l
并将结果输出到 output
中。接着,我们再次创建一个子进程对象 p
,执行命令 grep example
并将 input_data
shell=True
매개변수를 지정하여 셸 명령을 실행할 수도 있습니다. 샘플 코드는 다음과 같습니다. rrreee
위 코드에서는 Shell 명령 "ls -l"
을 Popen 클래스의 생성자에 매개 변수로 전달하고 매개 변수를 전달합니다. shell=True
쉘 명령을 실행합니다.
communicate()
를 사용합니다. 하위 프로세스와의 메소드 상호작용을 통해 하위 프로세스의 출력을 얻고 이를 output
변수에 할당합니다. 그런 다음 decode("utf-8")
메서드를 사용하여 바이너리 문자열을 UTF-8 인코딩 문자열로 변환하고 출력을 인쇄합니다. 🎜🎜3. 하위 프로세스의 통신🎜 communicate()
메서드를 사용하면 하위 프로세스에 데이터를 보낼 수 있을 뿐만 아니라 출력 결과도 받을 수 있습니다. 하위 프로세스의. 다음은 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 먼저 하위 프로세스 개체 p
를 생성하고 ls -l
명령을 실행한 후 결과를 다음으로 출력합니다. 출력
. 다음으로 하위 프로세스 개체 p
를 다시 만들고 grep example
명령을 실행한 다음 input_data
를 하위 프로세스로 보냅니다. 마지막으로 결과를 인쇄합니다. 🎜🎜요약:🎜하위 프로세스 모듈을 사용하면 하위 프로세스를 쉽게 생성, 제어 및 통신할 수 있습니다. 실제 프로그래밍 프로세스에서는 보다 복잡한 하위 프로세스 관리 작업을 달성하기 위해 특정 요구 사항에 따라 이러한 기능을 유연하게 사용할 수 있습니다. 이 기사가 Python에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 데 도움이 되었기를 바랍니다. 🎜위 내용은 Python 3.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!