Python搁置模块内存消耗

|| 我被分配了读取.txt文件的任务,该文件记录了各种事件,并将其中一些事件写入字典中。 问题在于文件有时大小可能超过3GB。这意味着字典太大而无法放入主存储器。似乎搁置是解决此问题的好方法。但是,由于我将不断修改字典,因此必须启用
writeback
选项。这就是我所关心的-教程说这将减慢读/写过程并使用更多的内存,但是我无法找到有关速度和内存如何受到影响的统计信息。 谁能澄清读/写速度和内存受到多少影响,以便我可以决定是使用写回选项还是牺牲某些可读性以提高代码效率? 谢谢     
已邀请:
对于这种大小的数据库,搁置确实是错误的工具。如果您不需要高度可用的客户端/服务器体系结构,而只想将TXT文件转换为本地可在内存中访问的数据库,则您确实应该使用ZODB 如果您需要一些高度可用的资源,那么您当然需要切换到正式的\“ NoSQL \”数据库,该数据库有很多可供选择。 这是一个简单的示例,说明如何将您的搁置数据库转换为ZODB数据库,这将解决您的内存使用/性能问题。
#!/usr/bin/env python
import shelve
import ZODB, ZODB.FileStorage
import transaction
from optparse import OptionParser
import os
import sys
import re

reload(sys)
sys.setdefaultencoding(\"utf-8\")

parser = OptionParser()

parser.add_option(\"-o\", \"--output\", dest = \"out_file\", default = False, help =\"original shelve database filename\")
parser.add_option(\"-i\", \"--input\", dest = \"in_file\", default = False, help =\"new zodb database filename\")

parser.set_defaults()
options, args = parser.parse_args()

if options.in_file == False or options.out_file == False :
    print \"Need input and output database filenames\"
    exit(1)

db = shelve.open(options.in_file, writeback=True)
zstorage = ZODB.FileStorage.FileStorage(options.out_file)
zdb = ZODB.DB(zstorage)
zconnection = zdb.open()
newdb = zconnection.root()

for key, value in db.iteritems() :
    print \"Copying key: \" + str(key)
    newdb[key] = value
                                                                                                                                                                                                
transaction.commit() 

要回复问题请先登录注册