Python使用multiprocessing创建进程的方法

 更新时间:2015年06月04日 09:51:51   作者:raygtr  
这篇文章主要介绍了Python使用multiprocessing创建进程的方法,实例分析了multiprocessing模块操作进程的相关技巧,需要的朋友可以参考下

本文实例讲述了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使用lambda表达式对字典排序操作示例

    Python使用lambda表达式对字典排序操作示例

    这篇文章主要介绍了Python使用lambda表达式对字典排序操作,结合实例形式分析了lambda表达式实现字典按键排序、按值排序、多条件排序相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • 超实用的 10 段 Python 案例

    超实用的 10 段 Python 案例

    Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流行的原因。今天这篇文章就给大家分享 10 段超级有用的 Python 案例,需要的朋友可以参考一下
    2021-09-09
  • Python爬虫之Selenium警告框(弹窗)处理

    Python爬虫之Selenium警告框(弹窗)处理

    这篇文章主要介绍了Python爬虫之Selenium警告框(弹窗)处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python selenium页面加载慢超时的解决方案

    Python selenium页面加载慢超时的解决方案

    这篇文章主要介绍了Python selenium页面加载慢超时的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python真题案例之二分法查找详解

    Python真题案例之二分法查找详解

    这篇文章主要介绍了python实操案例练习,本文给大家分享的案例中主要讲解了二分法查找,需要的小伙伴可以参考一下
    2022-03-03
  • Python之Pygame的Event事件模块

    Python之Pygame的Event事件模块

    这篇文章主要介绍了Pygame的Event事件模块,事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,Pygame 定义了一个专门用来处理事件的结构,即事件队列,本文有一定参考价值,感兴趣的同学可以阅读参考
    2023-04-04
  • Pandas把dataframe或series转换成list的方法

    Pandas把dataframe或series转换成list的方法

    这篇文章主要介绍了Pandas把dataframe或series转换成list的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python中import warnings的具体作用

    python中import warnings的具体作用

    在Python开发中,我们经常会遇到一些警告信息,本文主要介绍了python中import warnings的具体作用,以提醒用户潜在的问题,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 在Pytorch中计算自己模型的FLOPs方式

    在Pytorch中计算自己模型的FLOPs方式

    今天小编就为大家分享一篇在Pytorch中计算自己模型的FLOPs方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 在centos7中分布式部署pyspider

    在centos7中分布式部署pyspider

    PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
    2017-05-05

最新评论