我想弄清楚如何在我的應用程序中測量幾個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. 剖析PHP在線
- 4. 剖析C + Python(SWIG)
- 5. 如何剖析python的泄漏進程?
- 6. Python的Django的剖析
- 7. 分析和剖析多線程應用程序
- 8. 剖析python C擴展
- 9. 剖析
- 10. 編程語言剖析器
- 11. JProfiler - 應用程序剖析
- 12. 剖析Chrome應用程序
- 13. python:面向字節碼的剖析器
- 14. 剖析多線程和多處理器程序
- 15. OWIN Startup的剖析
- 16. Node.js的CPU剖析
- 17. 在python中剖析自我和參數?
- 18. 回傳剖析
- 19. Django剖析
- 20. Spring Boot剖析
- 21. 剖析.net庫
- 22. 淨剖析 - 瞭解託管線程開始和結束
- 23. 如何用Tufte剖析多線程clojure結果
- 24. 剖析多線程代碼,如何抽樣工作
- 25. 使用NVIDIA可視化剖析器剖析MATLAB mex CUDA應用程序
- 26. 剖析Ruby代碼
- 27. 剖析vCard JSON C#
- 28. 剖析OpenCL內核
- 29. 剖析XSL性能
- 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