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 数据结构之堆栈实例代码
Jan 22 Python
python实现简单神经网络算法
Mar 10 Python
python中reader的next用法
Jul 24 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
Python交互式图形编程的实现
Jul 25 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
Dec 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
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
vue设置一开始进入的页面教程
2019/10/28 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
python+django+rest框架配置创建方法
2019/08/31 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
企业形象策划方案
2014/05/29 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
运动会开幕式主持词
2015/07/01 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
python字典的元素访问实例详解
2021/07/21 Python
python之json文件转xml文件案例讲解
2021/08/07 Python