我有一个大熊猫数据帧(>;10GB),我想将其划分为较小的DFs,然后使用multiprocessing
对它们进行并行排序
我的代码的简化版本如下:
from multiprocessing import Process
import numpy as np
import pandas as pd
def sort_df(df):
df.sort_values(by=["b"], inplace=True)
print(df)
if __name__ == "__main__":
df = pd.DataFrame(np.random.rand(20, 3), columns=['a', 'b', 'c'])
gb = df.groupby(pd.cut(df["b"], 4))
# copy() is to suppress SettingWithCopyWarning
partitioned_dfs = [gb.get_group(g).copy() for g in gb.groups]
procs = []
for df in partitioned_dfs:
proc = Process(target=sort_df, args=(df,))
procs.append(proc)
proc.start()
for proc in procs:
proc.join()
当我使用大DF作为输入时,我的代码似乎占用了太多内存
partitioned_dfs
占用的内存量与
输入DF李>partitioned_dfs
在其地址空间中,尽管它负责
仅适用于整个DF的一个子集李>我想知道如何减少代码的内存使用。多处理在这里是合适的选择吗
目前没有回答
相关问题 更多 >
编程相关推荐