Python的并发并行[3] - 进程[1] - 多进程的基本使用
多进程的基本使用
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] - 多进程的基本使用相关推荐
- python爬虫并发并行下载
1一百万个网站 1用普通方法解析Alexa列表 2复用爬虫代码解析Alexa列表 2串行爬虫 3并发并行爬虫 0并发并行工作原理 1多线程爬虫 2多进程爬虫 4性能对比 这篇将介绍使用多线程和多进程这 ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)
PART0:OS,这货到底是个啥? OS,是个啥? OS的结构们: 存储器: 存储器的层次结构: 内存:我们的程序和数据都是存储在内存,我们的程序和数据都是存储在内存,每一个字节都对应一个内存地址.内 ...
- Python的并发并行[1] - 线程[3] - 多线程的同步控制
多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...
- 〖Python语法进阶篇①〗- 进程与多进程概述
说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区. 福利:除了通过订阅"白宝书系列专栏"加入社区获取 ...
- python多线程并发_Python进阶记录之基础篇(二十四)
回顾 在Python进阶记录之基础篇(二十三)中,我们介绍了进程的基本概念以及Python中多进程的基本使用方法.其中,需要重点掌握多进程的创建方法.进程池和进程间的通信.今天我们讲一下Python中 ...
- 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!
作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...
- Python 3 并发编程多进程之进程同步(锁)
Python 3 并发编程多进程之进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,竞争带来的结果就是错乱,如何控制,就是加锁处理. 1. ...
- Python并行编程(七):多进程的基本使用和与多线程的差异
进程 由于GIL的存在,Python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在Python中大部分情况需要使用多进程.Python提供了非常好用的多进程模块multip ...
- 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行
基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程 ...
最新文章
- linux qt 音频文件怎么打开,Qt:获取Linux中可用音频设备的列表
- php 复选框组,php – 选择所有复选框
- 查看PLC IP 端口_详解S7-1500的以太网通信数据类型:TCON_IP_v4
- css 一些好玩的属性,推荐一些比较有用的css3新属性
- 【Python3 爬虫】13_爬取博客园首页所有文章
- py获取前端的参数_鹅厂技术说 | 深入理解前端性能监控
- python有参装饰器详解_Python 带有参数的装饰器实例代码详解
- 工程项目管理系统源码
- 数据结构_树状数组 详解
- IOS 开发技能图谱——ios 开发工程师必知必会要点
- html5首字母大小写,css中如何设置英文首字母大写
- 【Origin】Origin准确标注某点
- 如何在Guitar Pro上添加吉他和弦
- Win10家庭中文版开机后弹窗无法登录到你的账户点注销没用(解决过程记录)
- Django项目(sysinfo系统信息和用户信息展示)
- 原生js实现点名册效果
- 2021年全球与中国汽车LED驱动器行业市场规模及发展前景分析
- 无人机学习之路——学习路线
- 英雄联盟无限重新连接服务器,英雄联盟无法连接服务器你想重新连接吗
- eXtremeDB内存预警机制
热门文章
- log4net异步写入日志_redis学习笔记(三)RDB日志
- 木质机器人挂坠_木质挂坠相比绚烂夺目的金银首饰,用木头做的饰品更显得古香古色...
- php中去除数组中空值,php如何去除数组中空值
- jquery粘贴按钮_实现前端点击按钮自动复制剪贴板功能
- Mysql8.0.12解压版安装亲测(步骤超级简单)
- [USACO13NOV]Farmer John has no Large Brown Cow【状压 / 模拟】
- [USACO13OPEN]Luxury River Cruise【模拟】
- 笔记+R︱风控模型中变量粗筛(随机森林party包)+细筛(woe包)
- windows Mobile使用ActiveSync上网
- 使用Docker Swarm来运行服务