python - 如何在不复制的情况下在多个进程中使用大型数据集?
问题描述
我需要在 python 中对大型数据集(>10GB)运行多个(1000-10000s)搜索查询。为了加快速度,我想并行运行各个查询。但是,据我了解,将数据集解析到不同的进程会复制它,从而增加内存需求,这很快就会变得不可行。所以,我想问问社区,是否可以在不增加内存使用的情况下,在多个并行运行的进程(函数)中解析(处理)一个大数据集?
下面是一个示例脚本。在这里,随着 的增加n
,内存使用量会增加并很快变得受限。
from multiprocessing import Pool
import sys
def goo(d):
for k,v in d.items():
print(k,len(v))
d = {'a':[3]*(10**5),
'b':[6]*(10**8)}
n = int(sys.argv[1])
with Pool(processes=n) as pool:
pool.starmap(goo, [[d]]*n)
编辑:澄清一下,这是一个工具的一部分,将与在不同平台和环境中工作的其他人共享。所以,我需要一些特定于 python 的东西,因为我不想让解决方案依赖于外部依赖项。
解决方案
推荐阅读
- python - 我的 tkinter 图像显示为黑屏
- mongodb - 如何提高mongoDb中展开操作阶段的性能
- python - 熊猫阵列拼接
- ios - 如何在任何情况下快速更改导航栏按钮项目的颜色?
- amazon-web-services - 使用 AWS CLI 测试 Amazon SageMaker 模型终端节点时,base64 无效:"{"instances": [{"in0":[863],"in1":[882]}]}"
- python - Django 3.* Python 3.* - 在数据库方法中节省空间
- javascript - 如何在 Tampermonkey 脚本上添加下一个/上一个按钮分页?
- python - 使用python的快速排序算法
- javascript - 如何根据用户类型更改 VueJS 中的背景
- spring - 为什么我的 H2 数据库 Spring 配置不起作用?