一、示例代码:
from multiprocessing import Pool
import os
import time
def task(name):
print('子进程(%s)执行task %s...' % (os.getpid(), name))
time.sleep(1)
if __name__ == '__main__':
print('父进程PID为:(%s)' % os.getpid())
pool = Pool(3) # 创建一个进程池,最大进程数为3
for i in range(10):
pool.apply_async(task, args=(i,)) # 用非阻塞方式调用task函数
print('等待所有子进程结束...')
pool.close() # 关闭进程池,关闭后不再接收新请求
pool.join() # 等待子进程结束
print('所有子进程结束.')
二、运行结果:
三、要点总结:
本示例创建一个进程池,设置最大进程数为3,使用非阻塞方式执行了10个任务,然后查看每个进程执行的任务。运行结果可以看出,PID为2775的子进程执行了4个任务,其它两个子进程分别执行了3个任务。