Python使用multiprocessing创建进程的方法


Posted in Python onJune 04, 2015

本文实例讲述了Python使用multiprocessing创建进程的方法。分享给大家供大家参考。具体分析如下:

进程可以通过调用multiprocessing的Process进行创建,下面代码创建两个进程。

[root@localhost ~]# cat twoproces.py 
#!/usr/bin/env python
from multiprocessing import Process
import os
def output():
 print "My pid is :%d\n" % os.getpid()
 print "My parent is:%d\n" % os.getppid()
def main():
 p=Process(target=output) 
 p.start()
 print "I am parent %d\n" % os.getpid()
if __name__=="__main__":
 main()

运行结果如下:

[root@localhost ~]# ./twoproces.py 
I am parent 7656
My pid is :7660
My parent is:7656

以下程序结果的mypid值将在两个进程中固定不变.

[root@localhost ~]# cat badprocessID.py 
#!/usr/bin/env python
from multiprocessing import Process
import os
def output(mypid):
 print "I am child %d ID :%d\n" % (os.getpid(),mypid)
def main():
 mypid=os.getpid()
 p=Process(target=output,args=(mypid,)) 
 print "I am parent %d\n" % os.getpid()
 p.start()
if __name__=="__main__":
 main()

有与子进程并没有重设mypid,所以运行过程中mypid并没有任何改变。

下面代码将创建一个由子进程创建子进程的进程链。

[root@localhost ~]# cat simplechina.py 
#!/usr/bin/env python
import os
from multiprocessing import Process
def output(howmany,childpid):
 info = (howmany,os.getpid(),os.getppid(),childpid)
 print "i:%d process ID:%d parent ID%d child ID %d\n" % info
def chain(howmany):
 howmany = howmany-1
 if howmany > 0:
 p = Process(target=chain,args=(howmany,)) 
 p.start()
 output(howmany,p.pid)
def main():
 childpid = 0
 howmany=6
 p = Process(target=chain,args=(howmany,))
 p.start()
if __name__=="__main__":
 main()

有与主进程利用Process创建子进程,而子进程又再创建子进程(也就是A->B->C-D),如此类推,知道howmany小于0结束。运行1结果如下:

[root@localhost ~]# ./simplechina.py 
i:5 process ID:13581 parent ID13580 child ID 13582
i:4 process ID:13582 parent ID13581 child ID 13583
i:3 process ID:13583 parent ID13582 child ID 13584
i:2 process ID:13584 parent ID13583 child ID 13585
i:1 process ID:13585 parent ID13584 child ID 13586

接下来如何创建一个进程扇,也就是:
            A
          /   \
         B     C
建立simplefan.py文件,代码如下:

[root@localhost ~]# cat simplefan.py 
#!/usr/bin/env python
import os
from multiprocessing import Process
def output(howmany,childpid):
 info = (howmany,os.getpid(),os.getppid(),childpid)
 print "i:%d process ID:%d parent ID%d child ID %d\n" % info
def fan(i):
 output(i,os.getpid())
def main():
 pList=[]
 for i in range(6):
 p = Process(target=fan,args=(i,))
 pList.append(p)
 for p in pList:
 p.start()
 for p in pList:
 p.join()
if __name__=="__main__":
 main()

运行结果如下:

[root@localhost ~]# ./simplefan.py 
i:0 process ID:13594 parent ID13593 child ID 13594
i:2 process ID:13596 parent ID13593 child ID 13596
i:3 process ID:13597 parent ID13593 child ID 13597
i:1 process ID:13595 parent ID13593 child ID 13595
i:4 process ID:13598 parent ID13593 child ID 13598
i:5 process ID:13599 parent ID13593 child ID 13599

除了进程ID为13593的进程外,其它进程的父进程都是13593
父进程利用join方法等等所有的子进程结束。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python概率计算器实例分析
Mar 25 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
深入理解Python中的super()方法
Nov 20 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
Python如何转换字符串大小写
Jun 04 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 #Python
python实现支持目录FTP上传下载文件的方法
Jun 03 #Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 #Python
python获取各操作系统硬件信息的方法
Jun 03 #Python
wxPython定时器wx.Timer简单应用实例
Jun 03 #Python
Python基于DES算法加密解密实例
Jun 03 #Python
Python使用minidom读写xml的方法
Jun 03 #Python
You might like
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python开发中range()函数用法实例分析
2015/11/12 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
Python 线程池用法简单示例
2019/10/02 Python
python tkinter控件布局项目实例
2019/11/04 Python
keras之权重初始化方式
2020/05/21 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
python3访问字典里的值实例方法
2020/11/18 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
美国知名艺术画网站:Art.com
2017/02/09 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
银行介绍信范文
2014/01/10 职场文书
化工操作工岗位职责
2014/04/29 职场文书
鲁冰花观后感
2015/06/10 职场文书
小学教师教学随笔
2015/08/14 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
Python实现智慧校园自动评教全新版
2021/06/18 Python