码迷,mamicode.com
首页 > 编程语言 > 详细

python多进程中使用pool

时间:2015-02-16 16:56:41      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

Python 多进程中使用pool,pool中指定每次运行几个进程,当其中一个进程结束完毕后,会加入新的进程

 

#!/usr/bin/env python
#coding: utf-8
import multiprocessing
import os,time,random

def Lee():
    print "Run task Lee-%s" %(os.getpid()) #os.getpid()获取当前的进程的ID
    start=time.time()
    time.sleep(random.random()*10) #random.random()随机生成0-1之间的小数
    end=time.time()
    print 'Task Lee, runs %0.2f seconds.' %(end - start)

def Marlon():
    print "Run task Marlon-%s" %(os.getpid())
    start=time.time()
    time.sleep(random.random()*40)
    end=time.time()
    print 'Task Marlon runs %0.2f seconds.' %(end - start)

def Allen():
    print "Run task Allen-%s" %(os.getpid())
    start=time.time()
    time.sleep(random.random()*30)
    end=time.time()
    print 'Task Allen runs %0.2f seconds.' %(end - start)

def Frank():
    print "Run task Frank-%s" %(os.getpid())
    start=time.time()
    time.sleep(random.random()*20)
    end=time.time()
    print 'Task Frank runs %0.2f seconds.' %(end - start)
        
if __name__=='__main__':
    function_list=  [Lee,Marlon,Allen,Frank] 
    print "parent process %s" %(os.getpid())
    pool=multiprocessing.Pool(2)
    for func in function_list:
        pool.apply_async(func) #Pool执行函数,apply执行函数,当有一个进程执行完毕后,会添加一个新的进程到pool中
    print 'Waiting for all subprocesses done...'
    pool.close()
    pool.join() #调用join之前,一定要先调用close() 函数,否则会出错, close()执行后不会有新的进程加入到pool,join函数等待素有子进程结束
    print 'All subprocesses done.'


 

python多进程中使用pool

标签:

原文地址:http://blog.csdn.net/kobeyan/article/details/43852733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!