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编程开发之类型转换convert实例分析
Nov 13 Python
CentOS6.5设置Django开发环境
Oct 13 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
flask中过滤器的使用详解
Aug 01 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python使用selenium实现批量文件下载
Mar 11 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
python实现简单贪吃蛇游戏
Sep 29 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
长波有什么东西
2021/03/01 无线电
融入意大利的咖啡文化
2021/03/03 咖啡文化
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
解析php5配置使用pdo
2013/07/03 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
Using the TextRange Object
2006/10/14 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
python 爬取疫情数据的源码
2020/02/09 Python
Python bytes string相互转换过程解析
2020/03/05 Python
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
魅力教师事迹材料
2014/01/10 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
数学教师个人工作总结
2015/02/06 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python