• 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() 拿到进程池进程执行之后的返回结果

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

       生命不息
       希望不止
       将来的你
       一定会感谢现在拼命的自己
       fighting!!!
  • 相关阅读:
    aps.net 图形验证码(转)
    js浮点数计算问题 + 金额大写转换
    meta标签总结
    Asp.net Session 保存到MySql中
    css3实现边框圆角样式
    iOS开发之NSOperation & NSOperationQueue
    iOS开发之多线程
    iOS开发之Block
    iOS开发之核心动画(Core Animation)
    iOS开发之CALayer
  • 原文地址:https://www.cnblogs.com/lonelyshy/p/9741314.html
Copyright © 2020-2023  润新知