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
    正是江南好风景
  • 相关阅读:
    EF在二手市场中的使用
    二手商城集成jwt认证授权
    core3商城DDD实战(一)建模
    数组的逆序对
    C++实现线程安全的单例
    分配格充要条件的两种证明
    一个简单的日历系统(C++)
    HTTP基础--网页基础
    HTTP基础 --响应
    HTTP基础--请求
  • 原文地址:https://www.cnblogs.com/monsterhy123/p/12675670.html
Copyright © 2011-2022 走看看