进程3_进程池
--同步:按顺序执行完成--时间长
--异步:确保进程迟数量,不按顺序执行--时间短
同步执行结果:
主进程开始执行>>> pid=10044
子进程开始执行>>>pid=12744,ppid=10044,编号0
子进程终止>>>pid=12744,ppid=10044,编号0
子进程开始执行>>>pid=14976,ppid=10044,编号1
子进程终止>>>pid=14976,ppid=10044,编号1
子进程开始执行>>>pid=5696,ppid=10044,编号2
子进程终止>>>pid=5696,ppid=10044,编号2
子进程开始执行>>>pid=11916,ppid=10044,编号3
子进程终止>>>pid=11916,ppid=10044,编号3
子进程开始执行>>>pid=12824,ppid=10044,编号4
子进程终止>>>pid=12824,ppid=10044,编号4
子进程开始执行>>>pid=12744,ppid=10044,编号5
子进程终止>>>pid=12744,ppid=10044,编号5
子进程开始执行>>>pid=14976,ppid=10044,编号6
子进程终止>>>pid=14976,ppid=10044,编号6
子进程开始执行>>>pid=5696,ppid=10044,编号7
子进程终止>>>pid=5696,ppid=10044,编号7
子进程开始执行>>>pid=11916,ppid=10044,编号8
子进程终止>>>pid=11916,ppid=10044,编号8
子进程开始执行>>>pid=12824,ppid=10044,编号9
子进程终止>>>pid=12824,ppid=10044,编号9
主进程终止
running time 5.447811126708984
异步执行结果:
主进程开始执行>>> pid=14436
子进程开始执行>>>pid=17108,ppid=14436,编号0
子进程开始执行>>>pid=13752,ppid=14436,编号1
子进程开始执行>>>pid=15588,ppid=14436,编号2
子进程开始执行>>>pid=15648,ppid=14436,编号3
子进程开始执行>>>pid=14840,ppid=14436,编号4
子进程终止>>>pid=17108,ppid=14436,编号0
子进程终止>>>pid=13752,ppid=14436,编号1
子进程终止>>>pid=15588,ppid=14436,编号2
子进程开始执行>>>pid=17108,ppid=14436,编号5
子进程开始执行>>>pid=13752,ppid=14436,编号6
子进程开始执行>>>pid=15588,ppid=14436,编号7
子进程终止>>>pid=15648,ppid=14436,编号3
子进程开始执行>>>pid=15648,ppid=14436,编号8
子进程终止>>>pid=14840,ppid=14436,编号4
子进程开始执行>>>pid=14840,ppid=14436,编号9
子进程终止>>>pid=15588,ppid=14436,编号7子进程终止>>>pid=13752,ppid=14436,编号6
子进程终止>>>pid=17108,ppid=14436,编号5
子进程终止>>>pid=15648,ppid=14436,编号8
子进程终止>>>pid=14840,ppid=14436,编号9
主进程终止
running time 1.3147943019866943
import os,time
from multiprocessing import Pool
def worker(arg):
print("子进程开始执行>>>pid={},ppid={},编号{}".format(os.getpid(),os.getppid(),arg))
time.sleep(0.5)
print("子进程终止>>>pid={},ppid={},编号{}".format(os.getpid(),os.getppid(),arg))
def main():
print("主进程开始执行>>> pid={}".format(os.getpid()))
t1=time.time()
ps = Pool(5)
for i in range(10):
# ps.apply(worker,args=(i,)) # 同步执行,5.458413362503052
ps.apply_async(worker, args=(i,)) # 异步执行 ,1.4192376136779785
# 关闭进程池,停止接受其它进程
ps.close()
# 阻塞进程
ps.join()
print("主进程终止")
t2=time.time()
print("running time",t2-t1)
if __name__=="__main__":
main()
posted on 2019-10-18 11:01 happygril3 阅读(126) 评论(0) 收藏 举报
浙公网安备 33010602011771号