进程 subprocess创建和管理子进程

#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模块提供了一个强大的接口来创建和管理子进程,可以执行外部命令、与子进程进行通信以及控制子进程的运行。它在许多场景下都非常有用,例如执行系统命令、调用其他可执行文件以及实现一些特殊的进程间通信需求
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值