Python中每个进程的CPU使用率

时间:2008-11-09 18:35:15

标签: python monitoring cpu-usage

我是否可以看到当前python应用程序正在使用的处理器使用量(最大值百分比)?

方案: 我的主机将允许我运行我的应用程序,只要它不消耗超过X%的CPU功率,所以我希望它“关注自己”和减速。那么我怎么知道应用程序使用了多少CPU?

目标平台是* nix,但我想在Win主机上也这样做。

4 个答案:

答案 0 :(得分:26)

>>> import os
>>> os.times()
(1.296875, 0.765625, 0.0, 0.0, 0.0)
>>> print os.times.__doc__
times() -> (utime, stime, cutime, cstime, elapsed_time)

Return a tuple of floating point numbers indicating process times.

来自(2.5)手册:

  

次()

     

返回一个5元组的浮点数,表示累计(处理器或其他)时间,以秒为单位。这些项目包括:用户时间,系统时间,孩子的用户时间,孩子的系统时间,以及自上一个固定点以来经过的实际时间。请参阅Unix手册页时间(2)或相应的Windows Platform API文档。可用性:Macintosh,Unix,Windows。

答案 1 :(得分:12)

使用psutil

>>> import psutil
>>> p = psutil.Process()
>>> p.cpu_times()
cputimes(user=0.06, system=0.03)
>>> p.cpu_percent(interval=1)
0.0
>>> 

答案 2 :(得分:6)

resource模块提供getrusage,它可以为您提供所需的信息,至少对于类Unix的平台而言。

请注意,CPU使用率百分比始终是在一段时间内测量的。从本质上讲,它是程序执行某些操作所花费的时间除以间隔时间。

例如,如果您的应用程序在5秒内占用2秒的CPU时间,那么可以说它占用了40%的CPU。

请注意,使用多处理器系统时,这种计算很简单,可能会变得棘手。如果您的应用程序在双处理器系统的5秒钟挂钟时间内使用7秒的CPU时间,您说它是使用140%还是70%CPU?

更新:如gimel所述,os.times功能还以独立于平台的方式提供此信息。当然,上述计算说明仍然适用。

答案 3 :(得分:0)

使用time.clock()获取CPU时间。 要获得CPU使用百分比,请执行CPU时间/经过的时间

例如,如果经过的CPU时间为0.2且经过的时间为1,那么cpu的使用率为20%。

注意:您必须除以您拥有的处理器数量。如果你有2个,即双核:

import decimal,timeit
decimal.getcontext().prec=1000
def torture():
    decimal.Decimal(2).sqrt()
    time.sleep(0.1)
import time
clock=time.clock()
while 1:
    clock=timeit.timeit(torture,number=10)
    tclock=time.clock()
    print((tclock-clock)*p)
    clock=tclock