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 相关文章推荐
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
python魔法方法-自定义序列详解
Jul 21 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python格式化日期时间操作示例
Jun 28 Python
Python编程中类与类的关系详解
Aug 08 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python logging模块原理解析及应用
Aug 13 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
4种非常实用的python内置数据结构
Apr 28 Python
Python序列化模块JSON与Pickle
Jun 05 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
关于php中一些字符串总结
2016/05/05 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
AJAX的使用方法详解
2017/04/29 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
javascript div 弹出可拖动窗口
2009/02/26 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
Python编写屏幕截图程序方法
2015/02/18 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python语音识别实践之百度语音API
2018/08/30 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
客户答谢会活动方案
2014/08/31 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
在redisCluster中模糊获取key方式
2021/07/09 Redis
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers