我有一个相当大的二进制格式的 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 中使用较少的数据。
