如何减少python中大列表所使用的内存

2024-05-23 17:49:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一个程序,它运行得很好,但是当它把数据库(一个100MB的文本文件)加载到一个列表中时,它的内存使用量就变成了700-800MB

用于将文件加载到列表中的代码:

database = []
db = open('database/db.hdb')
dbcontent = db.read()
for line in dbcontent.split('\n'):
    line = line.split(':')
    database.append(line)

狙击手数据库公司名称:

^{pr2}$

(整个文件有大约1800000行)

如何减少内存使用


Tags: 文件内存代码程序数据库列表dbline
2条回答

您应该使用file对象作为迭代器来减少文件的内存使用。然后,您可以将数据库列表分块处理,而不是全部处理在一起。例如:

results = []
database = []
for line in open("database/db.hdb"):
    line = line.split(':')
    #You could then manage database in chunks?
    database.append(line)
    if len(database) > MAX:
        #dosomething with database list so far to get result
        results.append(process_database(database))
        database = []
#do something now with individual results to make one result
combine_results(results)

只要内存中不需要完整的文件,就可以一次读取一行:

database = []
db = open('database/db.hdb')
line = db.readline()
while line:
    line = line.split(':')
    database.append(line)
    line = db.readline()

See here for details on ^{}

相关问题 更多 >