内存在大型数据结构操作/处理中的使用

Sil*_*ost 4 python garbage-collection memory-leaks data-structures

我有一些大的(~100 Mb)文件,我经常处理.虽然我在处理期间尝试删除不需要的数据结构,但内存消耗有点过高.我想知道是否有办法有效地操纵大数据,例如:

def read(self, filename):
    fc = read_100_mb_file(filename)
    self.process(fc)
def process(self, content):
    # do some processing of file content
Run Code Online (Sandbox Code Playgroud)

是否存在重复的数据结构?使用像self.fc这样的类范围属性不是更高效的内存吗?

我什么时候应该使用垃圾收集?我知道gc模块,但是我之后会调用它del fc吗?

更新
ps 100 Mb本身不是问题.但浮动转换,进一步处理显着增加工作集和虚拟大小(我在Windows上).

Rya*_*rom 7

我建议看看David Beazley在Python中使用生成器的演示.这种技术允许您快速处理大量数据并进行复杂处理,而不会耗尽内存使用量.IMO,诀窍是尽可能高效地在内存中保存大量数据; 诀窍是避免同时将大量数据加载到内存中.

  • Gah,我一看到问题就跳进去回答,并附上 Beazley 文章的链接,看到你已经给出了答案。哦,好吧,必须给你投票+1!只是希望我能给它超过+1。 (2认同)