# # Python中的进程池相当于一个容器,里面存放指定数量的进程,当池中有空闲进程时,就可以拿来使用
# # 若没有空闲进程,则需要等待
import os
from multiprocessing import Pool
from time import sleep
def func1(name):
print(f"进程id:{os.getpid()}-{name}")
sleep(2)
return name
def func2(args):
print(args)
if __name__ == '__main__':
# 创建进程池对象
pool = Pool(5)
# callback=func2 -> 执行完func1后将返回值传给func2
pool.apply_async(func=func1, args=("sxt1",), callback=func2)
pool.apply_async(func=func1, args=("sxt2",), callback=func2)
pool.apply_async(func=func1, args=("sxt3",), callback=func2)
pool.apply_async(func=func1, args=("sxt4",))
pool.apply_async(func=func1, args=("sxt5",))
pool.apply_async(func=func1, args=("sxt6",))
pool.apply_async(func=func1, args=("sxt7",))
pool.apply_async(func=func1, args=("sxt8",))
# 使用完进程池关上
pool.close()
# 等待所有子进程执行完
pool.join()
#
老师,程序运行结果如下,想问下,进程池中sxt1还没有执行func2打印sxt1,说明sxt1还在使用(不处于空闲状态),但是该进程为什么却被sxt6再次使用了呢
