为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的多处理代码停止处理大型数据集?

为什么我的多处理代码停止处理大型数据集?

智慧大石 2023-08-22 16:36:58
我正在尝试计算特征方阵 ( Information_Gains_Matrix) 和相应的方权重矩阵 ( Weights_Matrix) 的莫兰指数。对于中的每个特征,Information_Gains_Matrix我想在固定的情况下计算莫兰指数Weights_Matrix。因此,我尝试使用 multiprocessing pool.map 来处理Information_Gains_Matrix. 我可以让代码在小型测试数据集上以各种方式执行此操作。然而,当我使用实际的大数据集时,代码运行,但随后CPU使用率下降到0%,进程挂起,并且没有任何释放。import multiprocessingfrom multiprocessing import RawArray, Pool, Lockfrom functools import partial import numpy as np## Set up initial fake dataInformation_Gains_Matrix = np.random.uniform(0,1,(22000,22000))Weights_Matrix = np.random.uniform(0,1,(22000,22000))## Function I want to parallelise.  def Feature_Moran_Index(Chunks,Wij,N):       Moran_Index_Scores = np.zeros(Chunks.shape[0])    for i in np.arange(Chunks.shape[0]):        print(Chunks[i]) # Print ind to show it's running        Feature = Information_Gains_Matrix[Chunks[i],:]            X_bar = np.mean(Feature)        if X_bar != 0:            Deviance = Feature - X_bar            Outer_Deviance = np.outer(Deviance,Deviance)            Deviance2 = Deviance * Deviance            Denom = np.sum(Deviance2)            Moran_Index_Scores[i] = (N/Wij) * (np.sum((W * np.ndarray.flatten(Outer_Deviance)))/Denom)    return Moran_Index_Scores## Set up chunks inds for each core.Use_Cores = (multiprocessing.cpu_count()-2)Chunk_Size = np.ceil(Information_Gains_Matrix.shape[0] / Use_Cores)Range = np.arange(Information_Gains_Matrix.shape[0]).astype("i")Chunk_Range = np.arange(Chunk_Size).astype("i")Chunks = []for i in np.arange(Use_Cores-1):    Chunks.append(Range[Chunk_Range])    Range = np.delete(Range,Chunk_Range)我对这种方法没有忠诚度,如果有人可以帮助我以任何方式跨特征并行计算莫兰指数,我将非常感激,因为我似乎无法让它发挥作用。
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

在 中Feature_Moran_IndexDeviance具有形状(22000,),并且Outer_Deviance具有形状(22000, 22000)并使用 3.8GB 的 RAM。

数量

np.sum(W * np.ndarray.flatten(Outer_Deviance))

等于

np.sum(W_np * Outer_Deviance)

等于

Deviance @ W_np @ Deviance

将第一个表达式替换为最后一个表达式并删除 的定义后Outer_Deviance,您的程序将运行至完成,内存使用量为 c。11GB。


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1331 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信