我想弄清楚如何在我的应用程序中测量几个python线程的性能。我目前有几个基于用户输入在不同线程上执行的任务,我想测量每个线程的执行时间,甚至是内存消耗。我试图使用cProfile(在线程的每个实例上,然后我将数据写入文件,然后汇总所有结果),并取得了有限的成功。另外,我还有一些阻塞IO的问题,这会影响我的结果。无论如何有效地分析我的应用程序?Python线程的剖析
9
A
回答
3
有几种不同的方法来解决这个问题。 cProfile
很棒,并附带Python,但很多人将多线程分析视为一个问题。解决这个问题的一种方法是对每个线程运行cProfile的单独实例,然后使用Stats.add
合并结果。
如果没有你期望的那么有用,另一种方法是使用Yappi,我已经成功使用了几个特殊的多线程情况。它有很好的文档,所以你不应该有太多的麻烦设置它。
有关内存特定的性能分析,请查看Heapy。但是请注意,如果你的代码不好,它可能会创建一些你见过的最大的日志文件!
+0
我的系统是一个Web服务器,如果我使用'pr = cProfile.Profile() '在不同的请求中,是不是叫做** cProfile **的单独实例? – user3978288 2017-09-05 08:14:22
相关问题
- 1. 剖析.Net线程争用
- 2. Python剖析
- 3. Python线剖析器结果不一致
- 4. 剖析PHP在线
- 5. Python剖析方法
- 6. 剖析C + Python(SWIG)
- 7. 如何剖析python的泄漏进程?
- 8. Python的Django的剖析
- 9. 分析和剖析多线程应用程序
- 10. 剖析python C扩展
- 11. 在python函数里剖析
- 12. 剖析SWIG Python代码
- 13. 剖析
- 14. 剖析Chrome应用程序
- 15. 编程语言剖析器
- 16. JProfiler - 应用程序剖析
- 17. python:面向字节码的剖析器
- 18. 剖析多线程和多处理器程序
- 19. 剖析/优化大量多线程应用程序
- 20. Node.js的CPU剖析
- 21. OWIN Startup的剖析
- 22. Python服务器实时剖析
- 23. 在python中剖析自我和参数?
- 24. 剖析R中
- 25. ngen和剖析
- 26. EProf Erlang剖析
- 27. Spring Boot剖析
- 28. 剖析.net库
- 29. Django剖析
- 30. 回传剖析
通过使用cProfile,你已经做了一个很好的开始!如果你可以用cProfile更详细地解释你的“有限的成功”,我们可以帮助解决这个问题并从那里继续。 – KushalP 2010-02-07 22:02:12
作为一个无关的说明,您可能需要考虑多个进程而不是多个线程:http://en.wikipedia.org/wiki/Global_Interpreter_Lock – badp 2010-02-08 07:42:24