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

进程池

时间:2018-08-19 10:54:38      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:成功   __name__   bar   turn   int   div   process   ESS   UNC   

# 进程池 内部维护一个进程序列,当使用时,则去进程池获取一个进程,如果进程池序列没有可供使用的进程,那么程序就等待,直到进程池中有可用进程为止。
# 进程池中有两个方法 apply表示同步方法 apply_async表示异步方法
from multiprocessing import Pool
import time, os


def foo(i):
    time.sleep(1)
    print(i)
    return i + 100


def bar(arg):
    print(os.getpid())
    print(os.getppid())
    print(logger:, arg)
    pass


if __name__ == __main__:

    pool = Pool(5)  # 创建进程池对象,最大进程数为5,如果不写5,则默认为电脑的实际核心数
    print(main process:, os.getpid())
    bar(1)
    print(- * 30)

    for i in range(100):  # 开100个任务
        pool.apply_async(func=foo, args=(i,),
                         callback=bar)  # 用进程池里的最大量(5),来跑这100个任务,callback表示回调函数(某个动作或函数执行成功后再去执行的函数)
        # pool.apply(func=foo, args=(i,))     # 同步方式,一次只能一个进程,不管你进程池里设置的是多少

    pool.close()
    pool.join()  # 在进程池中join要放在close的后面
    print(end)

 

进程池

标签:成功   __name__   bar   turn   int   div   process   ESS   UNC   

原文地址:https://www.cnblogs.com/dangrui0725/p/9499412.html

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