#1.执行外部命令:可以使用subprocess模块来执行系统命令或其他可执行文件。主要的函数包括subprocess.run()、subprocess.call()、subprocess.check_output()等。这些函数会启动一个子进程来执行给定的命令,并返回执行结果
import subprocess
# 使用subprocess.run()执行命令并获取返回结果
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
# 使用subprocess.call()执行命令,不获取返回结果
subprocess.call(['echo', 'Hello, World!'])
#2.与子进程进行交互:可以使用subprocess模块与子进程进行输入输出的交互。可以通过subprocess.Popen()函数创建一个子进程对象,然后使用该对象的方法来与子进程进行通信。
# 创建子进程并与其进行交互
process = subprocess.Popen(['python3'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
output, error = process.communicate(input=b'print("Hello, from the child process!")\n')
print(output.decode())
#3.控制子进程运行:subprocess模块还提供了一些控制子进程运行的方法,例如设置超时时间、发送信号等。
# 设置超时时间,如果子进程执行时间超过指定时间,则会抛出TimeoutExpired异常
try:
result = subprocess.run(['sleep', '5'], timeout=3)
except subprocess.TimeoutExpired:
print("The subprocess timed out.")
# 发送信号给子进程
process = subprocess.Popen(['python3', 'my_script.py'])
process.send_signal(signal.SIGINT) # 发送中断信号给子进程
总而言之,subprocess模块提供了一个强大的接口来创建和管理子进程,可以执行外部命令、与子进程进行通信以及控制子进程的运行。它在许多场景下都非常有用,例如执行系统命令、调用其他可执行文件以及实现一些特殊的进程间通信需求
进程 subprocess创建和管理子进程
最新推荐文章于 2024-06-14 09:50:01 发布