码迷,mamicode.com
首页 > 系统相关 > 详细

3.3.2 进程池

时间:2019-12-31 23:33:16      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:维护   call   tool   进程   ssi   htm   end   roc   cal   

进程池

进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。

进程池中有两个方法:

  • apply
  • apply_async

串行示例

from multiprocessing import Process, Pool
import time, os

def f(i):
    time.sleep(1)
    print(‘Process: ‘, os.getpid())    #2每个进程输出当前进程ID
    return i + 100

def bar(arg):
    print(‘Process %s execution is done!‘, arg % os.getpid())

if __name__ == ‘__main__‘:
    p = Pool(5)    #1启动一个池子,池子最多同时允许5个进程工作
    for i in range(10):
        p.apply(func=f, args=(i, ))    #使用apply()方法,池子中的进程按串行执行
    print(‘End‘)    #3
    p.close()

结果

Process:  3804
Process:  11880
Process:  3740
Process:  128
Process:  644
Process:  3804
Process:  11880
Process:  3740
Process:  128
Process:  644
End

并行示例

from multiprocessing import Process, Pool
import time, os

def f(i):
    time.sleep(1)
    print(‘Process: ‘, os.getpid())    #2.1每个进程输出当前进程ID
    return i + 100

def bar(arg):
    print(‘Process %s execution is done!‘, arg % os.getpid())    #2.2执行callback

if __name__ == ‘__main__‘:
    p = Pool(5)    #1启动一个池子,池子最多同时允许5个进程工作
    for i in range(10):
        p.apply_async(func=f, args=(i, ), callback=bar)
        #使用apply_async()方法,池子中的进程按并行执行
    print(‘End‘)    #3
    p.close()
    p.join()

结果

End
Process: Process:  14420 
7708
Process %s execution is done! 101
Process %s execution is done! 100
Process:  14936
Process %s execution is done! 102
Process:  9632Process: 
 14096
Process %s execution is done! 103
Process %s execution is done! 104
Process:  Process: 14420
 7708
Process %s execution is done! 105
Process %s execution is done! 106
Process:  14936
Process %s execution is done! 107
Process: Process:   9632
14096
Process %s execution is done! 108
Process %s execution is done! 109

每次蹦出5条结果

3.3.2 进程池

标签:维护   call   tool   进程   ssi   htm   end   roc   cal   

原文地址:https://www.cnblogs.com/infinitecodes/p/12127578.html

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