多处理:加载数据并运行计算

时间:2017-11-01 00:03:54

标签: python numpy multiprocessing

我试图尽可能快地对巨大的numpy数组进行一些计算。 为了做到这一点,我尝试threading,但它没有使用所有可用的CPU。所以我尝试使用multiprocessing,但因为过程I之间没有共享记忆,所以想知道它是否可能:

  • 在流程(工作人员)中加载数据并将其保存在内存中
  • 每次调用这些工作人员的功能时,都要对这些数据进行一些计算

我尝试过以下代码:

class Worker(multiprocessing.Process):

    def __init__(self, csv_path):
        self.matrix = pd.read_csv(self.csv_path).as_matrix()

    def matrix_count_worker(rule):
        return np.nansum(self.matrix[eval(rule), :], axis=0)

但是我想开始我的流程并让他们保持活跃。所以首先是.start()。但是,我希望能够根据需要多次调用matrix_count_worker,而self.matrix会在内存中保持加载状态。

有可能实现吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你,你需要在一个巨大的阵列上加速计算吗?

看看numexpr,它适用于大型数组,可以使用所有内核。