2024-06-25 07:20:33 发布
网友
我有一个multiprocessing应用程序泄漏内存。但是,泄漏不在主流程中(根据Dowser和top)而是在子流程中。有什么方法可以在子流程上使用Dowser(或类似工具)来跟踪泄漏吗?如果没有,它如何追踪它?在
multiprocessing
top
在更新:我花了我花了很多时间试图使用heapy和gnibbler's code但我找不到漏洞。然后在主进程中停止cherrypy,在子进程中启动另一个cherrypy(使用Dowser)。但过了几分钟,雪莉就不再听波特了。。。:(所以我还是在寻找更好的主意。在
我已经通过使用muppy-很好的工具找到了内存泄漏(在外部C库中),我希望我能早点找到它!谢谢大家的回答。在
我发现memory_profiler非常容易使用,但我不确定它如何与多处理交互,因为我从未使用过该模块。请参阅这个answer以获得简短的解释,以及该线程中提到其他Python分析器的其他答案。在
我发现了几个帖子,应该会很有帮助。还没来得及消化其中的所有信息,但我想我会发布这些链接,让你也看看。在
mariusgedminas有两篇关于在Python测试套件中寻找memleaks的帖子。他使用了内置的gc和inspect模块,并简单地将对象图作为csv文件转储到磁盘上,因此即使对于mp应用程序,这种方法也能很好地工作。在
gc
inspect
mp
我今天晚些时候有空的时候再去调查。在
更新
Marius将他的测试平台作为一个名为objgraph(link)的开源项目发布。它跟踪gc对象引用,但允许您打印出有用的信息,例如在函数调用后添加了多少个类型的实例,并允许您查看对象的完整引用链。在
objgraph
这些文档非常自解释,我看不出它为什么不能与mp应用程序一起工作的原因。在
但是,如果内存泄漏来自于某个底层c库,那么这可能对您没有帮助。至少它能让你知道泄漏在哪里。如果结果不是在python代码中,那么您可能需要重构代码,以便在主进程中运行相关的c库,并使用类似Valgrind的方法来检测泄漏。在
原帖 http://mg.pov.lt/blog/hunting-python-memleaks.html
他更专注于他所使用的工具 http://mg.pov.lt/blog/python-object-graphs.html
我开始发帖了 http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks
我已经通过使用muppy-很好的工具找到了内存泄漏(在外部C库中),我希望我能早点找到它!谢谢大家的回答。在
我发现memory_profiler非常容易使用,但我不确定它如何与多处理交互,因为我从未使用过该模块。请参阅这个answer以获得简短的解释,以及该线程中提到其他Python分析器的其他答案。在
我发现了几个帖子,应该会很有帮助。还没来得及消化其中的所有信息,但我想我会发布这些链接,让你也看看。在
mariusgedminas有两篇关于在Python测试套件中寻找memleaks的帖子。他使用了内置的
gc
和inspect
模块,并简单地将对象图作为csv文件转储到磁盘上,因此即使对于mp
应用程序,这种方法也能很好地工作。在我今天晚些时候有空的时候再去调查。在
更新
Marius将他的测试平台作为一个名为
objgraph
(link)的开源项目发布。它跟踪gc
对象引用,但允许您打印出有用的信息,例如在函数调用后添加了多少个类型的实例,并允许您查看对象的完整引用链。在这些文档非常自解释,我看不出它为什么不能与
mp
应用程序一起工作的原因。在但是,如果内存泄漏来自于某个底层c库,那么这可能对您没有帮助。至少它能让你知道泄漏在哪里。如果结果不是在python代码中,那么您可能需要重构代码,以便在主进程中运行相关的c库,并使用类似Valgrind的方法来检测泄漏。在
原帖 http://mg.pov.lt/blog/hunting-python-memleaks.html
他更专注于他所使用的工具 http://mg.pov.lt/blog/python-object-graphs.html
我开始发帖了 http://www.lshift.net/blog/2008/11/14/tracing-python-memory-leaks
相关问题 更多 >
编程相关推荐