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实现telnet服务器的方法
Jul 10 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
使用Python的turtle模块画图的方法
Nov 15 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
python画图的函数用法以及技巧
Jun 28 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
python分布式计算dispy的使用详解
Dec 22 Python
Python Django获取URL中的数据详解
Nov 01 Python
python 使用pandas读取csv文件的方法
Dec 24 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 文件上传类代码
2011/08/06 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
用vue写一个日历
2020/11/02 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
python导入时小括号大作用
2017/01/10 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python中类的初始化特殊方法
2017/12/01 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
python 实现端口扫描工具
2020/12/18 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
企业指导教师评语
2014/04/28 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
德劲DE1105机评
2022/04/05 无线电
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL