这是在Linux上,使用Python 3.8。我使用
ProcessPoolExecutor
来加速处理一系列大型数据框,但由于它们在每个进程中都被复制,导致内存不足。我该如何解决这个问题?
我的代码如下:def some_func(df):
# do some work on a single pandas DataFrame
return single_df # returns a single pandas DataFrame
# dfs is a list of 100 dataframes
with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
dfs = list(executor.map(some_func, dfs) # here entire dfs gets copied 4 times?
executor.shutdown(wait=True)
我希望尽量减少不必要的数据复制,即最小化我的内存占用。有什么好的解决方案吗?
multiprocessing.shared_memory
创建一个共享内存缓冲区,多个进程可以同时访问它。由于有大量的数组(100个数据帧*每个数据帧的列数),您可能需要创建一些管理代码来跟踪它们... - Aaron