欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何使用Python的multiprocessing進行分布式計算?

謝彥文2年前13瀏覽0評論

由于GIL的存在,python中的多線程其實并不是真正意義上的多線程,前面一篇文章Python中的多線程與多進程那些事中提到I/O密集型使用多線程并發執行提高效率、計算密集型使用多進程并行執行提高效率。

針對計算密集型的任務,我們如何通過多進程提高效率?

Window下的multiprocessing分布式計算

基于multiprocessing、queue等模塊實現簡易的分布式計算框架。服務節點負責任務的派發和任務結果的采集,工作節點分布在同一電腦的不同進程,或者其他電腦上,負責任務執行和結果反饋,服務節點與工作節點通過Queue實現數據共享(任務下發、結果反饋)。

其中包含Task、MaterWork、SlaveWork三個模塊,大體介紹及源碼如下:

Task模塊

根據任務需求,將自己的任務單獨封裝在task模塊中。

MaterWork(主節點/服務節點)

負責任務派發和結果采集,主從節點通過Queue實現任務、結果共享。代碼中注釋中已介紹的較清楚,這里不做贅述。

SlaveWork(從節點/計算節點)

使用說明

3.1在Task.py添加任務函數。

3.2調整主從節點任務派發具體函數、次數或參數。一般情況分發次數等于任務數,即分發任務的參數。

#添加待處理任務,實際應用過程添加的任務可以為函數的參數

foriinrange(0,10):

task=Task(i).computer()

print'Dispatchjob:{0}'.format(i)

dispatched_jobs.put(task)

3.3啟動主節點

3.3啟動從節點

將從節點計算模塊發送至不同電腦,啟動從節點即實現分布式計算,即N個從節點消費服務節點分發任務,并返回任務執行狀態、結果。

3.4啟動從節點后,可以在主節點運行界面,看到任務完成情況。

若對你有幫助,點贊支持一下。