python进程池
# Pool(processes=None, initializer=None, initargs=(), maxtasksperchild=None)
# 函数返回一个进程池(Pool)对象
# processes:工作进程的个数,默认为None,表示worker进程数为cpu_count()
# initializer: 表示工作进程start时调用的初始化函数,initargs表示initializer函数的参数,如果initializer不为None,在每个工作进程start之前会调用initializer(*initargs)
# maxtaskperchild: 每个工作进程在退出/被其他新的进程替代前,需要完成的工作任务数,默认为None,表示工作进程存活时间与pool相同,即不会自动退出/被替换。
# 使用例程import multiprocessing
def fun(x):
time.sleep(1)
return x ,x+1
if __name__ == '__main__':
print("本地计算机有: " + str(multiprocessing.cpu_count()) + " 核心")
process = []
pool = multiprocessing.Pool(4)
for j in range(8):
result = pool.apply_async(fun, (j,))
# 为fun函数的返回队列地址,当参数个数为1个时,需要加逗号!!!
process.append(result)
pool.close()
pool.join()
for i in process:
print(i.get())
运行结果
本地计算机有: 16 核心
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(5, 6)
(6, 7)
(7, 8)