Python中subprocess的简单使用示例


Posted in Python onJuly 28, 2015

在c语言中,一个进程可以fork出一个子进程,并让这个子进程exec一个新的命令。在python中,我们通过标准库的subprocess包来fork一个子进程,并在子进程中运行一个新的程序。

subprocess包中有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

使用subprocess包中的函数创建子进程的时候,需要注意:

  •     在创建子进程之后,父进程是否暂停,并等待子进程运行。
  •     函数返回什么
  •     当return code不为0时,父进程如何处理。

subprocess.call()

函数原型:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)

函数解释:
父进程等待子进程完成,返回执行是否成功。
subprocess.Popen

函数原型:

subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())

Popen对象创建后,主程序不会自动等待子进程完成。我们必须调用[/code]对象的wait()方法,父进程才会等待 (也就是阻塞block)。

Python 相关文章推荐
python中stdout输出不缓存的设置方法
May 29 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
Python文件如何引入?详解引入Python文件步骤
Dec 10 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
python中数字是否为可变类型
Jul 08 Python
python实现ROA算子边缘检测算法
Apr 05 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
Python中文竖排显示的方法
Jul 28 #Python
Python中的getopt函数使用详解
Jul 28 #Python
Python3访问并下载网页内容的方法
Jul 28 #Python
python3抓取中文网页的方法
Jul 28 #Python
python列表操作之extend和append的区别实例分析
Jul 28 #Python
python创建列表并给列表赋初始值的方法
Jul 28 #Python
python更新列表的方法
Jul 28 #Python
You might like
比较详细PHP生成静态页面教程
2012/01/10 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
多个jQuery版本共存的处理方案
2015/03/17 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
vue项目中使用Svg的方法
2018/10/24 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
Python XML RPC服务器端和客户端实例
2014/11/22 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Python进行数据提取的方法总结
2016/08/22 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
利用python开发app实战的方法
2019/07/09 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
大学军训感言
2014/01/10 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
初中生自我鉴定
2014/02/04 职场文书
给老婆的道歉信
2015/01/20 职场文书
文体活动总结
2015/02/04 职场文书
医德医风学习心得体会
2016/01/25 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL