我有一个多线程Python应用程序,我目前正在排除非常高(90%或更高)的CPU使用率。
我将尝试使用分析器,但我想看看是否有一种方法可以从应用程序中获得每个线程的CPU使用率。我知道os.times()将获得整体CPU使用率 - 我是否可以在每个线程中运行以获取每个线程的用法?确定哪个线程正在吃CPU是非常有帮助的。
答案 0 :(得分:2)
或者你可以简单地使用yappi。 (https://code.google.com/p/yappi/)如果选择CPU时钟类型进行性能分析,它会透明地使用GetThreadTimes()。它将显示正在运行的线程的CPU时间。
答案 1 :(得分:1)
除了分析器之外,我不认为Python有很多内置用于监视单个线程CPU使用情况。此外,this post提供了线程分析器的简单实现的示例。它似乎主要面向基于Unix的系统,但它是一个开始。
答案 2 :(得分:0)
如果您使用的是Windows,则可以查看Process Explorer(Microsoft's Sysinternals Tools附带的“procexp.exe”)。每个进程的属性中都有一个“Threads”选项卡,列出了所有线程及其CPU时间。
如果这不能提供足够的信息,请使用Python的profiling mechanisms,这些不太难用。