我正在計算每年相對計算密集型的一些數據。我已經使用numba(效果很好)來減少運行迭代計算數據所花費的時間。然而,鑑於我有20年的獨立數據,我想將它們分成5組,每組4個,可以運行4個不同的cpu核心。在Python中的多個CPU核心上運行簡單循環(工作在不同的數據上)的最簡單方法?
def compute_matrices(self):
for year in self.years:
self.xs[year].compute_matrix()
在上面的代碼片段中,函數是包含屬性year和xs的Class中的一個方法。 year
只是一個整數年份,而xs
是一個橫截面對象,其中包含xs.data和compute_matrix()方法。
什麼是最簡單的方法來拆分多核心?
如果有一個Numba風格decorater,可以自動向上突破的循環和在不同的進程中運行它們,結果粘合在一起這將是巨大的。這是否存在?
使用Python.multiprocessing是我最好的選擇嗎?
的compute_matrix()有一堆的代碼,它不會與''@ autojit''工作,由於在數據幀的嚴重依賴對象等。然而,在各種步驟之下,我用@autojit修飾器將計算循環變成了單獨的例程,這非常適用。現在我想只是一年一年的並行工作。 – sanguineturtle
要做到這一點,你需要改變一些東西。傳遞給「Process」實例的對象必須是可選的。看到這個問題的一些更多的信息:http://stackoverflow.com/questions/1816958/cant-pickle-type-instancemethod-when-using-pythons-multiprocessing-pool-ma – ebarr