zoukankan      html  css  js  c++  java
  • 进程池非阻塞状态的使用

    • Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程。

    • 格式: Pool([numprocess [, initializer [, initargs]]])
    • 其中numprocess是要创建的进程数。如果省略此参数,将使用cpu_count()的值。Initializer是每个工作进程启动时要执行的可调用对象。Initargs是要传递给initializer的参数元祖。Initializer默认为None

    •  1 import multiprocessing
       2 import time
       3 #进程执行的任务函数
       4 def func(msg):
       5     print('start:',msg)
       6     time.sleep(3)
       7     print('end:',msg)
       8 
       9 if __name__ == '__main__':
      10     #创建初始化3的进程池
      11     pool = multiprocessing.Pool(3)
      12     #添加任务
      13     for i in range(1,6):
      14         msg = '任务%d'%i
      15         pool.apply_async(func,(msg,))
      16     #如果进程池不在接受新的请求,调用close
      17     pool.close()
      18     #等待子进程结束
      19     pool.join()
    •  1 start: 任务1
       2 start: 任务2
       3 start: 任务3
       4 end: 任务1
       5 start: 任务4
       6 end: 任务2
       7 start: 任务5
       8 end: 任务3
       9 end: 任务4
      10 end: 任务5
    正是江南好风景
  • 相关阅读:
    boost编译中的细节问题
    geos编译问题
    安装pytorch的细节记录
    Qt学习-模仿Qt实现一个colorbutton
    BOOST内存管理-intrusive_ptr
    GEOS使用记录
    matlab添加永久路径
    关于浮点数的取值范围以及精度的问题
    vs2010中使用命令行参数
    sprintf fprintf EOF scanf 的返回值 深拷贝与浅拷贝
  • 原文地址:https://www.cnblogs.com/monsterhy123/p/12675670.html
Copyright © 2011-2022 走看看