python - 如何使用 Python 中的大量列表字典来扩展操作?
问题描述
我正在处理 python 中的“大数据”问题,我真的在为可扩展的解决方案而苦苦挣扎。
我目前拥有的数据结构是一个庞大的列表字典,包含数百万个键和数百万个项目的列表。我需要对列表中的项目进行操作。问题有两个方面:
(1) 如何对这么大的数据结构做可伸缩的操作?
(2)如何在内存限制的情况下做到这一点?
对于某些代码,这是一个非常基本的列表字典示例:
example_dict1 = {'key1':[367, 30, 847, 482, 887, 654, 347, 504, 413, 821],
'key2':[754, 915, 622, 149, 279, 192, 312, 203, 742, 846],
'key3':[586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}
对于元素的简单操作,通常的方法是遍历字典:
new_dictionary = {}
for k, v in example_dict.items():
new_list = []
for i in v: ## iterate through dictionary lists
i = compute_something(i) ## this is just an example, e.g. i**2 or i-13 would also work
new_list.append(i)
# now, create a new dictionary
new_dictionary[k] = new_list
问题是,这不适用于这么大的字典——我正在使用超过 250GB 内存的服务器,它很快就会变得太大而无法存储。它也太慢/不可扩展,因为这是一个处理器的单次迭代。
这个问题有可扩展的解决方案吗?
也许它会以某种方式分解字典,使用多处理进行计算并聚合?或者有没有办法将这些数据保存到磁盘?
我失去了想法...
解决方案
推荐阅读
- python - 如何删除矩阵中的一些条目。我正在从 matlab 转换为 python
- windows - 显示 GetInvalidFileNameChars() 的 Powershell 输出的十六进制值
- java - 为什么我需要写权限外部存储来删除文件?
- keras - LSTM 中的 input_shape
- networking - 如何从公共网站找到服务器 ip?
- c - 如何在c中检查int或char
- python - 如何在 csv 数据集中创建一组特定列?
- playframework - 游戏版本
- static - Openssl fipsld 在静态库中的使用
- javascript - Vue.js - 如何导入组件?(MIME 类型错误)