Python标准库 subprocess 模块多进程编程详解

OS 执行一个shell命令,会自动打开三个标准文件标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout), 标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程的I/O操作进程将从标准输入文件中得到输入数据将正常输出数据输出到标准输出文件,将错误信息送到标准错误文件中。标准输入、输出可以重定向, 从ubuntu linux为例输入重定向: wc < abc.txt, 输入重定向为由文件读入。
摘要由CSDN通过智能技术生成

1.1 基本功能

  • subprocess 模块,允许生成新的进程执行命令行指令,python程序,以及其它语言编写的应用程序, 如 java, c++,rust 应用等。
  • subprocess可连接多个进程的输入、输出、错误管道,并且获取它们的返回码。
  • asyncio也支持subprocess.

许多知名库都在使用此模块创建进程,以及做为跨语言粘合工具。典型如ansible, celery,selenium 等。

1.2 与multiprocessing主要区别

  • multiprocessing 创建的子进程的代码也需要开发者实现。
  • subprocess创建的子进程主要用于运行已有指令或应用。

根据上述主要区别,不难推断出, subprocess创建子进程的用途,主要用于执行非python的外部程序,如windows/linux 命令,C程序,Java程序等,而且可以实现进程通信,多进程管道,以及异步执行等。

1.3 subprocess 模块主要掌握知识点

(1)run()方法创建子进程
(2)stdin, stdout,stderr 的配置,以及管道使用
(3)Popen API使用。
(4)进程之间通信

2 使用run() 方法创建子进程

2.1 run() 语法

subprocess.run(args, \*, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, text=None, env=None)

返回值类型
subprocess.CompletedProcess
主要参数

  • args:表示要执行的命令。必须是以字符串为元素的 list or tuple 。
  • stdin、stdout 和 stderr:子进程的标准输入、输出和错误。其值可以是 subprocess.PIPE、subprocess.DEVNULL、一个已经存在的文件描述符、已经打开的文件对象或者 None。subprocess.PIPE 表示为子进程创建新的管道。subprocess.DEVNULL 表示使用 os.devnull。默认使用的是 None,表示什么都不做。
  • encoding: 如果指定了该参数,则 stdin、stdout 和 stderr 可以接收字符串数据,并以该编码方式编码。否则只接收 bytes 类型的数据。
  • shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。
  • check: 如check=true, 当进程退出码为非0时,将生成 CalledProcessError 异常

2.2 返回对象CompletedProcess的主要属性与方法:

主要属性

  • args 执行指令list or tuple
  • returncode 执行完子进程状态码,为0则表明它已经运行完毕,若值为负值 ,表明子进程被终
  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值