python——引用者的“框架”是什么意思?

6mzjoqzu  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(263)

我需要处理大量(40000+个)zip文件。我已经编写了打开每个zip文件、从文件中提取所需信息并将关键信息插入数据库的代码。每件事都很好,当我运行它为一个单一的拉链。但是,当我开始运行程序来处理所有内容时,它会崩溃。
我用计算机观看了内存分配 top 命令,可以看到内存消耗在稳步增长。我没有使用python3附带的库之外的任何库,所以它不是一些我忘记发布某些东西的自定义代码。
我看着 gc.get_referrers() 对于主处理函数返回之前的某些对象,我看到:

[<frame at 0x232b270, file '/reports.py', line 179, code visit>, <frame at 0x171d840, file '/reports.py', line 179, code visit>]

我还查看了垃圾收集模块,并打印了 gc.get_stats() . 我知道每个字段是什么,但我不知道如何解释函数返回的这些字段的列表。也就是说,我会在程序处理完每个zip和 collected 这个领域没有改变。当我的程序转到下一个zip文件时,我希望收集的对象数量会不断增加。

[{'collections': 10441, 'collected': 351, 'uncollectable': 0},
 {'collections': 949, 'collected': 67, 'uncollectable': 0},
 {'collections': 39, 'collected': 26128, 'uncollectable': 0}]

我不知道如何找到这个内存泄漏。我最好的猜测是,有一个无法访问的对象引用了某个东西,从而阻止它被垃圾收集。到目前为止,我掌握的是两个referer和垃圾收集数据,但我不知道如何获取更多信息,也不知道如何运行这些数据。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题