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迭代器的使用方法实例
Nov 21 Python
Python与shell的3种交互方式介绍
Apr 11 Python
查看Django和flask版本的方法
May 14 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
Python配置虚拟环境图文步骤
May 20 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
python使用装饰器作日志处理的方法
Jul 11 Python
Python 3 判断2个字典相同
Aug 06 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
python七种方法判断字符串是否包含子串
Aug 18 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
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP getName()函数讲解
2019/02/03 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript 一些用法小结
2009/09/11 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python实现简易淘宝购物
2019/11/22 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
windows下python安装pip方法详解
2020/02/10 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
Python多线程thread及模块使用实例
2020/04/28 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
超市端午节活动方案
2014/01/23 职场文书
元旦联欢会感言
2014/03/04 职场文书
保护动物倡议书
2014/04/15 职场文书
安全生产计划书
2014/05/04 职场文书
行政撤诉申请书
2015/05/18 职场文书
今日说法观后感
2015/06/08 职场文书