我在想一些节省内存的方法
问题是每个项目都有30个文件,每个45k行包含约20个部分的数据,这些数据被分成约100行的子部分
在一些代码中,我将子部分合并到数据帧中的各个部分 最后,将读取和解析的数据放入字典的代码如下所示
d4={}
V1=data_inputs
K1=V1.keys()
for k1 in K1: #k1 is file number
d3={}
V2=V1[k1]
K2=V2.keys()
for k2 in K2: #k2 is superpart number
d2={}
V21=V2[k2]
K21=V21.keys()
for k21 in K21: #k21 is part number
V22=V21[k21]
K22=V22.keys()
for k22 in K22: #k22 is part name
V23=V22[k22]
[...]
d1=SOME_PARSING_FUNCTION(...)
d2[k21]={k22:d1}
d3[k2]=d2
d4[k1]=d3
return d4
因此,输出具有以下方案:
{k1:{k2:{k21:{k22:pd.DF or pd.Panel or pd.Panel4D}}}}
代码的输出是
{01:{5:{01:{name1:DF},02:{name2:P},...,15:{name15}},
8:{01:{name1:DF},02:{name2:P},...,30:{name30}}}
{...}
{30:{5:{01:{name1:DF},02:{name2:P},...,15:{name15}},
8:{01:{name1:DF},02:{name2:P},...,30:{name30}}}
但它只适用于项目1,如果我要解析更多的项目,我想它会消耗太多内存
问题:那么使用泡菜。矮胖的(),然后读?你知道吗
有人知道怎么做吗?我的意思是,我应该把tmp文件的每个子目录的文件或整个目录的文件?你知道吗
问题2:以后如何读取所有这些tmp文件并将它们放在一个pickle文件中?你知道吗
代码完成后,我将它写入一个大的原始腌制h5文件,然后从那里我再次读取它并将其放入另一个h5文件中,但采用了如下方案:
'/k1/k2/k21/k22/' V22
或者
'/k2/k21/k22/k1/' V22
其中V22是一些数据帧形式的值 (这部分代码比创建目录要快得多)
将子部分连接成多个部分不是一个好主意,尤其是当子部分的大小很大时。 尝试分别解析每个文件,并将结果附加到单个输出文件中。 这种方法应该更快,并且允许您避免使用tmp文件。你知道吗
相关问题 更多 >
编程相关推荐