我在Linux服务器上有一个长期运行的Python 3任务Killed
,这显然是由于资源耗尽。该任务读入大约5000个项目的数据集,在列表上运行for
循环,并对每个元素进行一些相当密集的处理。它在完成第一个100之前被杀死了。处理数据与循环的一次迭代没有相互依赖,所以理论上一切都应该是迭代之间的垃圾收集,但不知怎的,它仍然因内存不足而被杀死。
是否有任何有用的技术来获取Python 3脚本的内存配置文件并弄清楚它在哪里泄漏内存,所以我可以调试它?我查找过的大多数工具,比如memory_profiler
库,似乎需要你知道问题出在哪里才能找到它,要求你用一个已知的错误函数来注释特定的装饰。问题是,这是一个非常大的程序,有超过40个.py脚本和十几个第三方库,其中一些是本机代码(numpy,scipy等),我甚至不知道从哪里开始查找。
找出漏洞存在的最佳方法是什么?