播放大型视频文件通常不会立即将整个文件读入内存 - 媒体播放器将缓冲足以开始显示它,然后根据需要进行更多流式传输。如果你希望你的数据库更加快捷,你可以以不同的方式存储它,这样它就不需要将所有内容加载到内存中 - 就像一个小得多的索引作为一个具有数据记录偏移量的树。
也就是说,3分钟确实听起来很极端。你可以试着让它更快的一些事情:
cPickle
如果您不需要在内存中同时使用整个评级字典,您可能会考虑将dict存储到数据库或由一组文件组成的“磁盘上”数据库。我是作者 klepto ,它非常适合这个目的 - 它提供了一个python字典抽象接口到SQL数据库,或磁盘上的文件目录;两者看起来都符合你的目的。
klepto
简而言之,您可以与数据库直接交互( cached=False )或由内存字典缓冲的一个( cached=True )。
cached=False
cached=True
要构建存档:
>>> import klepto >>> d = klepto.archives.dir_archive('ratings', serialized=True) >>> d['Dune'] = 10 >>> d['Monty Python'] = 9 >>> d['Avengers'] = 2 >>> d.dump()
要阅读条目或存档:
>>> import klepto >>> d = klepto.archives.dir_archive('ratings', serialized=True) >>> d.load('Dune') >>> d dir_archive('ratings', {'Dune': 10}, cached=True) >>> d['Dune'] 10 >>> d.load() >>> d.keys() ['Monty Python', 'Avengers', 'Dune'] >>> d.items() [('Monty Python', 9), ('Avengers', 2), ('Dune', 10)] >>>
如果您不需要所有条目,它应该加载更快。第二个好处是,您可以非常轻松地尝试不同的编码和存储格式,以查看最适合您需求的内容。