【问题标题】:如何在进程之间共享熊猫数据框以节省内存
【发布时间】:2022-01-20 20:09:00
【问题描述】:

我有一个大的 csv 文件(大约 10Gb)。 我使用不同的 ipython 笔记本对其进行分析。(使用 pd.read_csv() 将文件加载到每个笔记本的数据框中) 我的问题是,每次读取文件时,都会使用 10G 内存。 我想知道是否有办法在进程之间共享数据帧数据,以便优化内存使用。

理想的解决方案是这样的:

在我的服务器文件中,

def InitData():
   df = pd.read_csv(my.csv)
   share(df)

在其他笔记本文件中,

def loadingData():
    df = LoadingSharedData()
    result = df.sum() #something like this

无论我创建多少个笔记本,我的记忆中都只有一个数据框。

【问题讨论】:

    标签: python pandas dataframe multiprocessing


    【解决方案1】:

    如果您确信没有人能够干扰腌制文件,则使用pickle 是快速有效的,请参阅security considerations

    import pickle
    
    with open('filename.pickle', 'wb') as file:
        pickle.dump(df, file)
    
    with open('filename.pickle', 'rb') as file:
        df_test = pickle.load(file)
        
    print(df.equals(df_test))
    

    【讨论】:

    • read_pickle 比 read_csv 快得多。但是,在不同的笔记本中使用 read_pickle 与使用 read_csv 的内存相同。
    • 我明白了,你想拥有多个笔记本并期望它们共享内存......嗯,我认为这是不可能的。
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2012-01-11
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多