1. 程式人生 > >05 進程池map方法

05 進程池map方法

true art imp 傳參數 import pen ssi def proc

import time
from multiprocessing import Process,Pool


# def f1(n):
#     time.sleep(1)
#     print(n)

#對比多進程和進程池的效率
def f1(n):
    for i in range(5):
        n = n + i
if __name__ == ‘__main__‘:
    #統計進程池執行100個任務的時間
    s_time = time.time()
    pool = Pool(4)  #裏面這個參數是指定進程池中有多少個進程用的,4表示4個進程,如果不傳參數,默認開啟的進程數一般是cpu的個數
    # pool.map(f1,[1,2])  #參數數據必須是可叠代的
    pool.map(f1,range(100))  #參數數據必須是可叠代的,異步提交任務,自帶join功能
    e_time = time.time()
    dif_time = e_time - s_time

    #統計100個進程,來執行100個任務的執行時間
    p_s_t = time.time() #多進程起始時間
    p_list = []
    for i in range(100):
        p = Process(target=f1,args=(i,))
        p.start()
        p_list.append(p)
        # p.join()
    [pp.join() for pp in p_list]
    p_e_t = time.time()
    p_dif_t = p_e_t - p_s_t
    print(‘進程池的時間:‘,dif_time)
    print(‘多進程的執行時間:‘,p_dif_t)
    # 結果:
    # 進程池的時間: 0.40102291107177734
    # 多進程的執行時間: 9.247529029846191

  

05 進程池map方法