按线程分析Python CPU使用情况

9 投票
3 回答
6010 浏览
提问于 2025-04-15 17:55

我有一个多线程的Python应用程序,现在正在排查CPU使用率非常高(90%或更多)的问题。

我打算试试性能分析工具,但我想知道有没有办法在应用程序内部获取每个线程的CPU使用情况。我知道os.times()可以获取整体的CPU使用情况——有没有什么方法可以在每个线程中运行,以获取每个线程的使用情况?这将非常有助于确定哪个线程在占用CPU。

3 个回答

0

如果你在使用Windows系统,可以看看一个叫做进程查看器的工具("procexp.exe",它是微软的Sysinternals工具包里的一部分)。每个进程的属性里有一个“线程”选项卡,可以列出所有线程及其使用的CPU时间。

如果这些信息还不够,你可以使用Python的性能分析工具,这些工具其实也不难上手。

2

或者你可以简单地使用 yappi。(https://code.google.com/p/yappi/) 如果你选择了 CPU 时钟类型来进行性能分析,它会自动使用 GetThreadTimes()。这样你就能看到正在运行的线程的 CPU 时间。

这里还有一个例子可以参考:https://code.google.com/p/yappi/wiki/YThreadStats_v082

1

除了性能分析工具,我觉得Python并没有太多内置功能来监控单个线程的CPU使用情况。另外,这篇文章提供了一个简单的线程性能分析器的实现例子。这个例子主要是针对Unix系统的,但这算是一个开始。

撰写回答