我有一个多线程的Python应用程序,我目前正在排除非常高(90%或更多)的CPU使用率。配置文件Python CPU使用率通过线程
我正在尝试探查器,但我想知道是否有一种方法可以从应用程序中获取每个线程的CPU使用率。我知道os.times()将总体上获得CPU使用 - 是否有一些我可以从每个线程内运行以获得每个线程的使用?确定哪个线程正在吃掉CPU会非常有帮助。
我有一个多线程的Python应用程序,我目前正在排除非常高(90%或更多)的CPU使用率。配置文件Python CPU使用率通过线程
我正在尝试探查器,但我想知道是否有一种方法可以从应用程序中获取每个线程的CPU使用率。我知道os.times()将总体上获得CPU使用 - 是否有一些我可以从每个线程内运行以获得每个线程的使用?确定哪个线程正在吃掉CPU会非常有帮助。
除了剖析器,我不认为Python有很多内置的监视单独的线程CPU使用率。另外,this post提供了一个简单实现线程分析器的例子。它似乎主要面向基于Unix的系统,但这是一个开始。
如果您在Windows上,可以查看Process Explorer(与Microsoft's Sysinternals Tools一起发货的“procexp.exe”)。每个进程的属性中都有一个“Threads”选项卡,列出所有线程及其CPU时间。
如果这样不能提供足够的信息,请使用Python的profiling mechanisms,这些信息不太难用。
或者你可以简单地使用yappi。 (https://code.google.com/p/yappi/)如果选择CPU时钟类型进行性能分析,它将透明地使用GetThreadTimes()。它会显示正在运行的线程的CPU时间。
看到这里也是一个例子:https://code.google.com/p/yappi/wiki/YThreadStats_v082
什么操作系统你打算上测试/支持? – 2010-01-12 15:36:42
主要是Windows,但我们也支持Linux。 Windows的CPU使用率很高,但我们现在还没有在Linux上测试过它。 – Dave 2010-01-12 15:47:22