簡體   English   中英

Python中每個進程的CPU使用率

[英]CPU Usage Per Process in Python

我是否可以看到當前python應用程序使用的處理器使用量(最大值的百分比)?

場景:我的主機允許我運行我的應用程序,只要它不消耗超過X%的CPU功率,所以我希望它“關注自己”並放慢速度。 那么我怎么知道應用程序使用了多少CPU?

目標平台是* nix,但是我想在Win主機上也這樣做。

>>> 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。

通過使用psutil

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

resource模塊提供getrusage ,可以為您提供所需的信息,至少對於類Unix平台而言。

請注意,CPU使用率百分比始終是在一段時間內測量的。 從本質上講,它是程序執行某些操作所花費的時間除以間隔時間。

例如,如果您的應用程序在5秒的時間內占用2秒的CPU時間,那么可以說它占用了40%的CPU。

請注意,使用多處理器系統時,這種計算很簡單,可能會變得棘手。 如果您的應用程序在雙處理器系統上在5秒的掛鍾時間內使用7秒的CPU時間,您說它是使用140%還是70%的CPU?

更新:正如gimel所提到的, os.times函數還以獨立於平台的方式提供此信息。 當然,上述計算說明仍然適用。

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM