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读写txt文本文件的操作方法全解析
Jun 26 Python
Python之父谈Python的未来形式
Jul 01 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python检测服务器端口代码实例
Aug 31 Python
python SVD压缩图像的实现代码
Nov 05 Python
tensorflow的计算图总结
Jan 12 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
详解torch.Tensor的4种乘法
Sep 03 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
Python学习之迭代器详解
Apr 01 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/11/03 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python中用Spark模块的使用教程
2015/04/13 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
详解python调用cmd命令三种方法
2019/07/08 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
python pycharm的安装及其使用
2019/10/11 Python
python计算无向图节点度的实例代码
2019/11/22 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
Python中Selenium库使用教程详解
2020/07/23 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
Python实现自动签到脚本功能
2020/08/20 Python
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
历史学专业推荐信
2013/11/06 职场文书
检举信的格式及范文
2014/04/04 职场文书
讲文明倡议书
2015/04/29 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python