我有一个函数生成一个巨大的对象(大约100-150Gb的内存,在具有500Gb内存的机器上).
该函数在大约1小时内运行,并将文件写入磁盘(大约100Mb).
但是当函数结束时,程序在那里挂起几个小时而没有做任何事情(它在调用函数的地方之后没有继续指令).
我怀疑垃圾收集器试图删除在这个函数中创建的巨大对象,但我没有看到任何事情发生(strace打印没有),并且内存没有减少.
你知道为什么会这样,以及如何解决它?我正在使用python 3.5
当然不是答案,但这里有一个来自 Python 开发者邮件列表的线程,它描述了一些听起来像你所经历的行为(我也经历过)。https://mail.python.org/pipermail/python-dev/2008-December/084450.html
经过一番挖掘,发现了一些有趣的事情:
一种可能的解决方法是删除字典,同时仍保留对字典中对象的引用。它在此消息中呈现(非常接近线程的末尾)。https://mail.python.org/pipermail/python-dev/2008-December/084560.html
不幸的是,从线程中我无法看到明确的解决方案,但希望这有助于阐明正在发生的事情!
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |