多进程的基本使用


1 subprocess 常用函数示例

首先定义一个子进程调用的程序,用于打印一个输出语句,并获取命令行参数

1 import sys
2 print('Called_Function.py called, Hello world.')
3 try:
4     print('Got para', sys.argv[1:])
5 except:
6     pass

再定义主函数,即父进程,分别测试 run() / call() / check_call() / getstatusoutput() / getoutput() / ckeck_output函数。

 1 import subprocess
 2
 3 # subprocess.run()
 4 print('---------subprocess.run------------')
 5 re = subprocess.run(['python', 'Called_Function.py', 'para_1', 'para_2'])
 6 print('subprocess.run() test returns obj:', re)
 7 print('Return code is: {0}, stdout is: {1}, stderr is: {2}'.format(re.returncode, re.stdout, re.stderr))
 8
 9 # subprocess.call()
10 print('\n---------subprocess.call------------')
11 print('subprocess.call() test returns code:', subprocess.call(['python', 'Called_Function.py', 'para_1', 'para_2']))
12
13 # subprocess.ckeck_call()
14 print('\n---------subprocess.check_call------------')
15 try:
16     print('subprocess.check_call() test returns code:', subprocess.check_call(['python', 'Called_Function.py']))
17 except subprocess.CalledProcessError:
18     print('Failed to call.')
19
20 # subprocess.getstatusoutput()
21 print('\n---------subprocess.getstatusoutput------------')
22 print('subprocess.getstatusoutput() test returns:', subprocess.getstatusoutput(['python', 'Called_Function.py']))
23
24 # subprocess.getoutput()
25 print('\n---------subprocess.getstatusoutput------------')
26 print('subprocess.getoutput() test returns:', subprocess.getoutput(['python', 'Called_Function.py']))
27
28 # subprocess.check_output()
29 print('\n---------subprocess.check_output------------')
30 print('subprocess.check_output() test returns:', subprocess.check_output(['python', 'Called_Function.py']))

2 利用Popen类与子进程交互

首先定义一个子进程调用的函数,函数中需求一个输入

1 x = input('Please input something.')
2 print(x, 'Hello World!')
3 # Raise an error
4 print(y)

再定义父进程的函数

 1 import subprocess
 2
 3 prcs = subprocess.Popen(['python', 'Called_Function_Popen.py'],
 4                         stdout=subprocess.PIPE,
 5                         stdin=subprocess.PIPE,
 6                         stderr=subprocess.PIPE,
 7                         universal_newlines=True,
 8                         shell=True)
 9
10 print('subprocess pid:', prcs.pid)
11
12 re = prcs.communicate('These string are from stdin')
13 print('\nSTDOUT:', re[0])
14 print('\nSTDERR:', re[1])
15 if prcs.poll():
16     print('\nThe subprocess has been done')

相关阅读


1. subprocess 模块

转载于:https://www.cnblogs.com/stacklike/p/8167028.html

Python的并发并行[3] - 进程[1] - 多进程的基本使用相关推荐

  1. python爬虫并发并行下载

    1一百万个网站 1用普通方法解析Alexa列表 2复用爬虫代码解析Alexa列表 2串行爬虫 3并发并行爬虫 0并发并行工作原理 1多线程爬虫 2多进程爬虫 4性能对比 这篇将介绍使用多线程和多进程这 ...

  2. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)

    PART0:OS,这货到底是个啥? OS,是个啥? OS的结构们: 存储器: 存储器的层次结构: 内存:我们的程序和数据都是存储在内存,我们的程序和数据都是存储在内存,每一个字节都对应一个内存地址.内 ...

  3. Python的并发并行[1] - 线程[3] - 多线程的同步控制

    多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...

  4. 〖Python语法进阶篇①〗- 进程与多进程概述

    说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区. 福利:除了通过订阅"白宝书系列专栏"加入社区获取 ...

  5. python多线程并发_Python进阶记录之基础篇(二十四)

    回顾 在Python进阶记录之基础篇(二十三)中,我们介绍了进程的基本概念以及Python中多进程的基本使用方法.其中,需要重点掌握多进程的创建方法.进程池和进程间的通信.今天我们讲一下Python中 ...

  6. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!

    作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...

  7. Python 3 并发编程多进程之进程同步(锁)

    Python 3 并发编程多进程之进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,竞争带来的结果就是错乱,如何控制,就是加锁处理. 1. ...

  8. Python并行编程(七):多进程的基本使用和与多线程的差异

    进程  由于GIL的存在,Python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在Python中大部分情况需要使用多进程.Python提供了非常好用的多进程模块multip ...

  9. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行

    基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程 ...

最新文章

  1. linux qt 音频文件怎么打开,Qt:获取Linux中可用音频设备的列表
  2. php 复选框组,php – 选择所有复选框
  3. 查看PLC IP 端口_详解S7-1500的以太网通信数据类型:TCON_IP_v4
  4. css 一些好玩的属性,推荐一些比较有用的css3新属性
  5. 【Python3 爬虫】13_爬取博客园首页所有文章
  6. py获取前端的参数_鹅厂技术说 | 深入理解前端性能监控
  7. python有参装饰器详解_Python 带有参数的装饰器实例代码详解
  8. 工程项目管理系统源码
  9. 数据结构_树状数组 详解
  10. IOS 开发技能图谱——ios 开发工程师必知必会要点
  11. html5首字母大小写,css中如何设置英文首字母大写
  12. 【Origin】Origin准确标注某点
  13. 如何在Guitar Pro上添加吉他和弦
  14. Win10家庭中文版开机后弹窗无法登录到你的账户点注销没用(解决过程记录)
  15. Django项目(sysinfo系统信息和用户信息展示)
  16. 原生js实现点名册效果
  17. 2021年全球与中国汽车LED驱动器行业市场规模及发展前景分析
  18. 无人机学习之路——学习路线
  19. 英雄联盟无限重新连接服务器,英雄联盟无法连接服务器你想重新连接吗
  20. eXtremeDB内存预警机制

热门文章

  1. log4net异步写入日志_redis学习笔记(三)RDB日志
  2. 木质机器人挂坠_木质挂坠相比绚烂夺目的金银首饰,用木头做的饰品更显得古香古色...
  3. php中去除数组中空值,php如何去除数组中空值
  4. jquery粘贴按钮_实现前端点击按钮自动复制剪贴板功能
  5. Mysql8.0.12解压版安装亲测(步骤超级简单)
  6. [USACO13NOV]Farmer John has no Large Brown Cow【状压 / 模拟】
  7. [USACO13OPEN]Luxury River Cruise【模拟】
  8. 笔记+R︱风控模型中变量粗筛(随机森林party包)+细筛(woe包)
  9. windows Mobile使用ActiveSync上网
  10. 使用Docker Swarm来运行服务