从磁盘加载的Python字典占用内存空间过大

4 投票
2 回答
889 浏览
提问于 2025-04-18 06:34

我有一个保存在磁盘上的字典文件,大小大约是780兆字节。但是,当我把这个字典加载到内存中时,大小却意外地膨胀到了大约6千兆字节。有没有办法让它在内存中的大小保持接近实际的文件大小呢?(我指的是如果在内存中占用大约1千兆字节是可以接受的,但6千兆字节就有点奇怪了)。这是pickle模块的问题吗,还是我应该用其他格式保存这个字典?

这是我加载文件的方式:

import pickle

with open('py_dict.pickle', 'rb') as file:
    py_dict = pickle.load(file)

任何想法或帮助都将非常感谢。

2 个回答

1

用SQL把所有数据存到一个数据库里,然后用高效的查询来获取这些数据。

6

如果你只是用 pickle 来在字典里存储一些大值,或者存很多键的话,建议你考虑使用 shelve

import shelve
s=shelve.open('shelve.bin')
s['a']='value'

这样的话,只有在需要的时候才会加载每个键/值,其他的则保留在硬盘上。

撰写回答