>  기사  >  백엔드 개발  >  Python 3.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법

Python 3.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법

王林
王林원래의
2023-08-01 13:04:501310검색

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 命令。

二、子进程的控制
在子进程创建成功后,我们可以使用子进程对象的各种方法来控制子进程的行为。下面是一些常用的方法:

  1. wait():等待子进程结束并返回状态码。
  2. communicate(input=None):与子进程进行交互,可以向子进程发送内容,也可以获取子进程的输出结果。
  3. poll():检查子进程是否结束,如果结束则返回进程的状态码,未结束则返回 None。

下面是一个示例代码,在子进程结束时获取输出结果并输出:

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 쉘 명령을 실행합니다.

🎜2. 하위 프로세스 제어🎜 하위 프로세스가 성공적으로 생성된 후 하위 프로세스 개체의 다양한 방법을 사용하여 하위 프로세스의 동작을 제어할 수 있습니다. 다음은 일반적으로 사용되는 몇 가지 방법입니다. 🎜
  1. wait(): 하위 프로세스가 끝날 때까지 기다렸다가 상태 코드를 반환합니다.
  2. communicate(input=None): 자식 프로세스와 상호작용하고, 자식 프로세스에 콘텐츠를 보낼 수 있으며, 자식 프로세스의 출력 결과도 얻을 수 있습니다.
  3. poll(): 하위 프로세스가 종료되는지 확인합니다. 종료되면 프로세스의 상태 코드를 반환합니다.
🎜다음은 출력 결과를 얻어서 자식 프로세스가 종료되면 출력하는 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 communicate()를 사용합니다. 하위 프로세스와의 메소드 상호작용을 통해 하위 프로세스의 출력을 얻고 이를 output 변수에 할당합니다. 그런 다음 decode("utf-8") 메서드를 사용하여 바이너리 문자열을 UTF-8 인코딩 문자열로 변환하고 출력을 인쇄합니다. 🎜🎜3. 하위 프로세스의 통신🎜 communicate() 메서드를 사용하면 하위 프로세스에 데이터를 보낼 수 있을 뿐만 아니라 출력 결과도 받을 수 있습니다. 하위 프로세스의. 다음은 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 먼저 하위 프로세스 개체 p를 생성하고 ls -l 명령을 실행한 후 결과를 다음으로 출력합니다. 출력. 다음으로 하위 프로세스 개체 p를 다시 만들고 grep example 명령을 실행한 다음 input_data를 하위 프로세스로 보냅니다. 마지막으로 결과를 인쇄합니다. 🎜🎜요약:🎜하위 프로세스 모듈을 사용하면 하위 프로세스를 쉽게 생성, 제어 및 통신할 수 있습니다. 실제 프로그래밍 프로세스에서는 보다 복잡한 하위 프로세스 관리 작업을 달성하기 위해 특정 요구 사항에 따라 이러한 기능을 유연하게 사용할 수 있습니다. 이 기사가 Python에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 데 도움이 되었기를 바랍니다. 🎜

위 내용은 Python 3.x에서 하위 프로세스 관리를 위해 하위 프로세스 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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