Python 将大数据帧作为参数传递给多处理函数

Python 将大数据帧作为参数传递给多处理函数,python,pandas,multiprocessing,pickle,Python,Pandas,Multiprocessing,Pickle,我在RAM中加载了一个大的pandas.DataFrame,我想将它分成五个部分,以便使用多处理模块的工作人员池独立处理这些部分 我的问题是我的pandas.DataFrame太大了,我无法将每个部分作为参数传递给我的多处理函数:我得到了一个pickle错误 我的问题是:如何在不显式传递数据帧的情况下,将已作为参数加载到RAM中的数据帧的这些部分传递给函数 换句话说,是否可以将指向每个数据帧的RAM地址的某种指针传递给多处理函数,而不是完整的数据帧?您只需切片df并传递块,例如df.iloc[:

我在RAM中加载了一个大的
pandas.DataFrame
,我想将它分成五个部分,以便使用
多处理
模块的
工作人员池
独立处理这些部分

我的问题是我的
pandas.DataFrame
太大了,我无法将每个部分作为参数传递给我的
多处理
函数:我得到了一个
pickle
错误

我的问题是:如何在不显式传递数据帧的情况下,将已作为参数加载到RAM中的数据帧的这些部分传递给函数


换句话说,是否可以将指向每个
数据帧
的RAM地址的某种指针传递给
多处理
函数,而不是完整的
数据帧

您只需切片df并传递块,例如df.iloc[:chunk_size]中的块的
将返回可通过
len(df/5)
确定chunksize的行数,如果要将df拆分为5parts@EdChum我认为你的观点很有价值(和往常一样),但这不是关键。这将序列化1/5,但最终仍然会序列化内容。从概念上讲,(至少在其他语言中),应该可以只传递一个指针。@AmiTavory这听起来像是一个类似于内存映射的东西在这里会有所帮助,但我不知道多处理是否会接受这样的东西,我一直认为多处理会复制数据,我不确定您是否可以绕过它谢谢,@EdChum-我看到过关于这件事的相互矛盾的说法。有人指出,在Linux中,子进程继承父进程的内存,因此如果子进程中没有修改,那么在没有共享内存的情况下,应该可以在不进行任何序列化的情况下传递该进程。有没有办法“广播”数据帧?