Python多进程及多参数的处理方法
生活随笔
收集整理的這篇文章主要介紹了
Python多进程及多参数的处理方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、多進程pool.map()方法一
import time from multiprocessing.pool import Pooldef numsCheng(i):return i * 2if __name__ == '__main__':time1 = time.time()nums_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]pool = Pool(processes=5)result = pool.map(numsCheng, nums_list)pool.close() # 關閉進程池,不再接受新的進程pool.join() # 主進程阻塞等待子進程的退出print(result)time2 = time.time()print("計算用時:", time2-time1)結果:
[2, 4, 6, 8, 10, 12, 14, 16, 18] 計算用時: 0.21639275550842285解釋說明:
1、看到Pool有一個processes參數,這個參數可以不設置,如果不設置函數會跟根據計算機的實際情況來決定要運行多少個進程,我們也可自己設置,但是要考慮自己計算機的性能。
2、map()函數。需要傳遞兩個參數,第一個參數就是需要引用的函數,第二個參數是一個可迭代對象,它會把需要迭代的元素一個個的傳入第一個參數我們的函數中。因為我們的map會自動將數據作為參數傳進去
3、pool()開啟了,不要忘記pool.close() 和 pool.join() 關閉進程池,以及讓主進程阻塞等待子進程的退出。
二、多進程pool.map()方法二
代碼:
from multiprocessing import Pooldef cal(item):n, mod = itemres = 1for i in range(2, n+1):res = res * i % modreturn resif __name__ == "__main__":args = []for i in range(1, 10):args.append((i,1000000007))with Pool(10) as pool:results = pool.map(cal, args)print(results)運行結果:
[1, 2, 6, 24, 120, 720, 5040, 40320, 362880]三、多參數情況處理:
代碼:
import time import multiprocessingdef job(x ,y):""":param x::param y::return:"""return x * ydef job1(z):""":param z::return:"""return job(z[0], z[1])if __name__ == "__main__":time1=time.time()pool = multiprocessing.Pool(2)data_list=[(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10)]res = pool.map(job1,data_list)time2=time.time()print(res)pool.close()pool.join()print('總共耗時:' + str(time2 - time1) + 's')運行結果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 總共耗時:0.24999451637268066s總結
以上是生活随笔為你收集整理的Python多进程及多参数的处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python读取Excel实例详细教程
- 下一篇: Python导入全局、局部模块以及如何让