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实现的Kmeans++算法实例
Apr 26 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
Python编写生成验证码的脚本的教程
May 04 Python
Python常用内置模块之xml模块(详解)
May 23 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
python解析命令行参数的三种方法详解
Nov 29 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
pandas抽取行列数据的几种方法
Dec 13 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Python单链表原理与实现方法详解
2020/02/22 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
用python制作个音乐下载器
2021/01/30 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
自主招生自荐书
2013/11/29 职场文书
本科生求职信
2014/06/17 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
PHP控制循环操作的时间
2021/04/01 PHP