我有一個問題,這是與此類似:Python的多處理和共享numpy的陣列
import numpy as np
C = np.zeros((100,10))
for i in range(10):
C_sub = get_sub_matrix_C(i, other_args) # shape 10x10
C[i*10:(i+1)*10,:10] = C_sub
因此,顯然沒有必要,運行此作爲串行計算,因爲每個子矩陣可以被獨立計算。 我想使用多處理模塊併爲for循環創建最多4個進程。 我閱讀了一些關於多處理的教程,但無法弄清楚如何使用它來解決我的問題。
感謝您的幫助
爲了多得性能改進的計算** **必須採取顯著時間。因爲多處理將*序列化*數據,將其發送到子進程,對其進行反序列化並執行計算,序列化結果,將其發送回主進程並最終反序列化它。序列化/反序列化需要相當長的時間,加上進程間通信也不是那麼快。如果'get_sub_matrix'實際上只是一些矩陣訪問,你就不會獲得任何加速。 – Bakuriu
這只是爲了說明的目的。最後,我的矩陣的維數約爲100000 x 20000,但get_sub_matrix_C更爲重要的是速度較慢,我認爲我無法更快地完成該功能。 – RoSt
get_sub_matrix_C是否需要訪問所有矩陣或只是子矩陣?因爲如果需要它,每個子進程的大矩陣的一個副本的序列化將非常耗時且耗費內存。 – eguaio