Skip to main content
 首页 » 编程设计

python之将文件内容保存在内存中

2025年05月04日18cmt

我有一个相当大的二进制格式的 pickled (dict) 文件,每次我从中查找乐谱时加载它需要几秒钟。我想知道是否可以在内存中只加载一次文件并从中查找,直到我退出程序。另外,如果有任何其他方法可以加快我的搜索速度。
提前谢谢了。

请您参考如下方法:

当我遇到此类问题时,我通常会创建一个函数并使用 memoize 装饰器对其进行装饰。在 http://wiki.python.org/moin/PythonDecoratorLibrary 上寻找“Memoize”

例如:

@memoized 
def get_dict(): 
    return pickle.load(file) 
 
foo = get_dict()['foo'] 

在这里使用 memoization 而不是在加载时执行它可以使这种情况延迟发生,因此如果您在程序的某些使用过程中最终没有使用该文件,您无需支付加载它的费用。

此外,就像另一位发帖人建议的那样,您应该使用 cPickle:

import cPickle as pickle 

您也可以考虑将大型字典拆分,可能经常在一个 pickle 中使用数据而在其他 pickle 中使用较少的数据。