Python被杀死(可能是内存泄漏)

卡比尚

我已经为此工作了几周,我已经阅读了很多有关python内存泄漏的问题,但我只是想不通。

我有一个包含约700万行的文件。对于每一行,我需要创建一个字典。所以这是字典的列表,看起来像:

[{'a': 2, 'b':1}{'a':1, 'b':2, 'c':1}]

我正在做的是...

list = []
for line in file.readlines():
    terms = line.split(" ")
    dict = {}
    for term in terms:
        if term in dict:
            dict[term] = dict[term] + 1
        else:
            dict[term] = 1
    list.append(dict.copy())
    dict.clear()
file.close()

问题是,当我运行此命令时,它总是在第6000000行附近被杀死。最初我只是在做,dict = {}但是更改了它,所以我在阅读了类似的帖子后做了dict.clear(),但是并没有任何改善。我知道提到过一些有关循环引用的文章,我调查了我的代码,但我认为我没有这个问题。

我怀疑在Python中不能将700万个字典存储在列表中吗?我将对如何在不被杀死的情况下完成所有事情提供任何建议,我将不胜感激。

(版本为2.7.4)

乔恩·克莱门斯

尝试:

from collections import Counter
with open('input') as fin:
    term_counts = [Counter(line.split()) for line in fin]

我相信这就是您要通过代码实现的目标。

这样可以避免.readlines()先将文件加载到内存中,利用Counter进行计数并一次性构建列表的过程,而不会费心消隐/分配/清除字典/添加到列表...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内存不足错误-可能是由于内存泄漏?

来自分类Dev

这可能是错误的肯定的内存泄漏报告吗?

来自分类Dev

内存泄漏-可能是由于范围外的阻塞

来自分类Dev

Python脚本被杀死

来自分类Dev

TensorFlow Python脚本被杀死

来自分类Dev

当计算机闲置几天后,Windows 10虚拟内存不足(可能是内存泄漏)

来自分类Dev

删除 python 包时 dpkg 被杀死

来自分类Dev

TORQUE SERVER:内存超过时如何避免作业被杀死?

来自分类Dev

如果父项在Python中被杀死,则杀死子进程

来自分类Dev

骆驼ProducerTemplate可能的内存泄漏

来自分类Dev

Django内存泄漏:可能的原因?

来自分类Dev

内存泄漏(?)Python 3.2

来自分类Dev

shell脚本杀死自己的原因可能是什么?

来自分类Dev

Python脚本被杀死而没有错误

来自分类Dev

Python:被杀死后多次处理到控制台

来自分类Dev

Python脚本在Ubuntu 12.04中被杀死

来自分类Dev

Python脚本从内部被杀死,但过程不会死掉

来自分类Dev

python multiprocessing:sleep语句被杀死了吗?

来自分类Dev

如果Python脚本被杀死或死亡,如何自动重启

来自分类Dev

当进程被杀死时,python守护进程线程正在退出

来自分类Dev

Python脚本在Ubuntu 12.04中被杀死

来自分类Dev

Django迁移被杀死

来自分类Dev

被杀死的应用列表

来自分类Dev

调试Python / NumPy内存泄漏

来自分类Dev

Python MySQLdb模块内存泄漏

来自分类Dev

Python MySQLdb模块内存泄漏

来自分类Dev

Python PyGObject pixbuf内存泄漏

来自分类Dev

iOS中内存泄漏的可能原因?

来自分类Dev

Spring Boot或Spring Security内存可能泄漏