我有一个问题,这是与此类似: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