• 预备
  • 基础语法
  • 容器类型
  • 函数
  • 面向对象
  • 输入输出
  • 进程控制
  • 线程控制
  • 正则表达式
  • 网络编程
  • 图形界面
  • 常见问题
  • API 帮助手册

  • 设置

2446

12 分钟

#进程池

进程的创建与退出都会带来额外的开销,如果反复创建与销毁进程,程序的性能将会受到影响。

此类场景下通常采取进程复用的方案,即进程退出时并不销毁而是暂停,下次需要创建进程时启动之前暂停的进程运行新的代码。

管理这些进程的对象称作 进程池,在 Python 中使用 multiprocessing 模块的 Pool 类来创建进程池,它的构造参数是进程的数量。

示例:

from multiprocessing import Pool import os def worker(i:int): print(f"PID:{os.getpid()} : {i}") if __name__ == '__main__': pool = Pool(4) # 创建进程池,包含 4 个进程 for i in range(100): pool.apply_async(worker, args=(i, )) # 给进程池分配任务 pool.close() # 等待进程池空闲后关闭 pool.join() # 等级进程池退出

运行结果:

  • 进程的调度顺序是不确定的,因此输出的顺序也不确定。
PID:109516 : 0 PID:109516 : 1 PID:109516 : 2 PID:109516 : 3 PID:109516 : 4 PID:109516 : 5 PID:109516 : 6 PID:109516 : 7 PID:109516 : 8 PID:109516 : 9 PID:109516 : 10 PID:109516 : 11 PID:109516 : 12 PID:109516 : 13 PID:109516 : 14 PID:109516 : 15 PID:109516 : 16 PID:109516 : 17 PID:109516 : 18 PID:109516 : 19 PID:109516 : 20 PID:109516 : 21 PID:109516 : 22 PID:109516 : 23 PID:109516 : 24 PID:109516 : 25 PID:109516 : 26 PID:109516 : 27 PID:109516 : 28 PID:109516 : 29 PID:109516 : 30 PID:109516 : 31 PID:109516 : 32 PID:109516 : 33 PID:109516 : 34 PID:109516 : 35 PID:109516 : 36 PID:109516 : 37 PID:109516 : 38 PID:109516 : 39 PID:109516 : 40 PID:109516 : 41 PID:109516 : 42 PID:109516 : 43 PID:109516 : 44 PID:109516 : 45 PID:109516 : 46 PID:109516 : 47 PID:109516 : 48 PID:109516 : 49 PID:109516 : 50 PID:109516 : 51 PID:109516 : 52 PID:109516 : 53 PID:109516 : 54 PID:109516 : 55 PID:109516 : 56 PID:109516 : 57 PID:109516 : 58 PID:109516 : 59 PID:109516 : 60 PID:109516 : 61 PID:109516 : 62 PID:109516 : 63 PID:109516 : 64 PID:109516 : 65 PID:109516 : 66 PID:109516 : 67 PID:109516 : 68 PID:109516 : 69 PID:109516 : 70 PID:109516 : 71 PID:109516 : 72 PID:109516 : 73 PID:109516 : 74 PID:109516 : 75 PID:109516 : 76 PID:109516 : 77 PID:109516 : 78 PID:56556 : 79 PID:109516 : 80 PID:56556 : 81 PID:109516 : 82 PID:56556 : 83 PID:109516 : 84 PID:56556 : 85 PID:109516 : 86 PID:56556 : 87 PID:109516 : 88 PID:56556 : 89 PID:109516 : 90 PID:56556 : 91 PID:109516 : 92 PID:56556 : 93 PID:109516 : 94 PID:56556 : 95 PID:109516 : 96 PID:56556 : 97 PID:109516 : 98 PID:56556 : 99

创建于 2025/5/11 23:04:52

更新于 2025/5/13 15:50:52