python多进程中使用pool

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

 

[python]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #!/usr/bin/env python  
  2. #coding: utf-8  
  3. import multiprocessing  
  4. import os,time,random  
  5.   
  6. def Lee():  
  7.     print "Run task Lee-%s" %(os.getpid()) #os.getpid()获取当前的进程的ID  
  8.     start=time.time()  
  9.     time.sleep(random.random()*10#random.random()随机生成0-1之间的小数  
  10.     end=time.time()  
  11.     print 'Task Lee, runs %0.2f seconds.' %(end - start)  
  12.   
  13. def Marlon():  
  14.     print "Run task Marlon-%s" %(os.getpid())  
  15.     start=time.time()  
  16.     time.sleep(random.random()*40)  
  17.     end=time.time()  
  18.     print 'Task Marlon runs %0.2f seconds.' %(end - start)  
  19.   
  20. def Allen():  
  21.     print "Run task Allen-%s" %(os.getpid())  
  22.     start=time.time()  
  23.     time.sleep(random.random()*30)  
  24.     end=time.time()  
  25.     print 'Task Allen runs %0.2f seconds.' %(end - start)  
  26.   
  27. def Frank():  
  28.     print "Run task Frank-%s" %(os.getpid())  
  29.     start=time.time()  
  30.     time.sleep(random.random()*20)  
  31.     end=time.time()  
  32.     print 'Task Frank runs %0.2f seconds.' %(end - start)  
  33.           
  34. if __name__=='__main__':  
  35.     function_list=  [Lee,Marlon,Allen,Frank]   
  36.     print "parent process %s" %(os.getpid())  
  37.     pool=multiprocessing.Pool(2)  
  38.     for func in function_list:  
  39.         pool.apply_async(func) #Pool执行函数,apply执行函数,当有一个进程执行完毕后,会添加一个新的进程到pool中  
  40.     print 'Waiting for all subprocesses done...'  
  41.     pool.close()  
  42.     pool.join() #调用join之前,一定要先调用close() 函数,否则会出错, close()执行后不会有新的进程加入到pool,join函数等待素有子进程结束  
  43.     print 'All subprocesses done.'  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值