多进程是是实现多任务的一种方法,进程池是实现多进程的一种方法,它可以定义一次可以执行多少个进程。对于知道需要同时执行多少个任务,而且同时执行任务较少(比如:同时执行5个任务),可以直接创建相应数量的进程。但对于所需要进程数量不确定,而且同时执行任务很多的情况下(比如:同时执行1000个任务),你不可能同时创建1000个进程,这样你的电脑会卡死,所以需要进程池来管理进程。
下面使用python来实现一个简单的进程池:
from multiprocessing import Pool
imoprt os, time, random
def Work(number):
# 创建一个方法,充当一次任务
start = time.time()
# os.getpid()为输出进程号
print("%d个进程开始执行,进程号为:%d" % (number, os.getpid()))
time.sleep(random.ramdom())
end = time.time()
print("%d个进程结束,执行时间为:%0.2f" % (number, end - start))
def main():
# 创建一个进程池,最大进程数量为3
po = Pool(3)
# po.apply_async(所要执行的任务,(传递的参数1,传递的参数2))为调用进程池执行任务。
for temp in range(0, 10)
po.apply_async(Work, (temp, ))
po.close() # 关闭进程池不再接受新的任务
po.join() # 阻塞主线程,等待子线程执行完毕,如果没有该方法,当主线程比子线程先执行完毕,那么主线程就会关闭,子线程即使没有执行完,也会关闭。
if __name__ == "__main__":
main()
以上就是简单的线程池的python代码实现:
运行结果:
从运行结果来看,同时运行的县城只能有3个,只有当前一个线程(任务)执行完毕后,才能够执行其他线程(任务)。