我有一个Python程序,运行一系列实验,每次测试之间都没有存储数据。我的代码包含了一个内存泄漏问题,但我完全找不到(我已经看过关于内存泄漏的其他帖子)。由于时间限制,我不得不放弃找到内存泄漏问题,但如果我能够隔离每个实验,程序可能会运行足够长的时间来产生我需要的结果。
- 在单独的线程中运行每个测试是否有帮助?
- 除此之外,还有其他隔离泄漏效果的方法吗?
关于特定情况的详细信息
- 我的代码分为两部分:实验执行器和实际实验代码。
- 虽然实验运行的所有代码和每个实验使用的代码之间没有共享全局变量,但某些类/函数是必须共享的。
- 实验执行器不仅仅是一个简单的for循环,可以轻松地放入shell脚本中。它首先根据配置参数决定需要运行哪些测试,然后运行测试,最后以特定方式输出数据。
- 我尝试手动调用垃圾回收器,以防问题只是垃圾回收器没有运行,但这并没有起作用。
更新
Gnibbler提供的答案实际上让我发现了我的ClosenessCalculation对象没有被释放,它们存储了每次计算期间使用的所有数据。然后我使用这个方法手动删除了一些链接,似乎解决了内存问题。