进程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)    收藏  举报

导航