约 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