python 进程池pool

Posted lonelyshy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 进程池pool相关的知识,希望对你有一定的参考价值。

进程池子

  • 当你成千上万的业务需要创建成千上万的进程时,我们可以提前定义一个进程池

    from multiprocessing import Pool

    • p = Pool(10) #进程池创建方式,类似空任务队列
      p.apply(func,args) #阻塞
      • func:func指明该进程池种的进程要工作的函数
        args:不定长接收进程池中进程工作函数的参数
        p.apply_async(func,args) #非阻塞方式
    • func:func指明该进程池种的进程要工作的函数

    • args:不定长接收进程池中进程工作函数的参数
      p.close()

      • 关闭进程池,不再接收新的任务了。
        p.join() **
        进程池里的进程资源要在关闭进程之后回收
        阻塞:单进程 | 串行 | 同步 | 多个进程可以排着队
        apply
        同一时间只能有一个进程来工作,其他进程等待这个进程的工作函数有了返回结果才能开启工作。
        非阻塞:多进程 | 并发 | 异步
        apply_async
        会在CPU核心数的基础上立即调用所有可用进程池中的进程资源来工作

        apply:

        获取子进程返回值
        
        直接获取这个函数的返回值即可
     for var in range(12):
      res.append(p.apply(func=work,args=(var,)))

    ret = apply_async

    • 非阻塞多进程执行之后返回的是一个抽象的进程返回结果
      我们需要再次对这个进程返回结果再实际获取才可以拿到进程池工作之后的返回值

      • ret.get() 拿到进程池进程执行之后的返回结果

        避免了进程多次创建而带来的效率上的损耗














以上是关于python 进程池pool的主要内容,如果未能解决你的问题,请参考以下文章

python 进程池pool

python_并发编程——进程池

python 进程池pool

122 Python程序中的多进程和多线程

Python 进程池 pool

Python_多进程_pool进程池