在python中進行多進程編程,咱們一般使用multiprocessing這個python官方的多進程庫,可是聽說有不少其餘更好的庫可以使用,有許多新的特性例如守護進程等,不過今天我只講比較簡單原始的multiprocessing。python
話很少說,直接上代碼:編程
def calcuvalue_main(arg1,arg2,arg3): '''計算函數''' valuelist = [] for word in arg1: #計算結果 pass return valuelist def pos_value_main(pos_words,neg_seedwords): '''多進程計算函數''' core_count = multiprocessing.cpu_count() pool = multiprocessing.Pool(core_count) result = [] res = {} pos_words_list = cutlist(pos_words) #將待算的輸入列表切分爲多個小列表 for index, pos_words in enumerate(pos_words_list): #將全部小列表分配到各個進程,返回的是一個個結果列表 res[index] = pool.apply_async(calcuvalue_main, (pos_words, pos_seedwords, neg_seedwords)) pool.close() pool.join() for i in res: #本條計算完畢 real_res = res[i].get() for k in real_res: result.append(k) return result
首先肯定你的程序是否適合多進程執行,若是適合,使用multiprocessing開啓多個進程,將你的輸入切分爲多塊,分塊投入到各個進程中執行。app
注意:切分塊的大小要適當調整,若是過小,單個進程的計算強度不夠,cpu在調度的時候,就不會打滿,會出現多個進程爭奪時間片的狀況,調整適當可以充分利用cpu。async