我可以使用以下代码获取当前的cpu使用详情
import psutil as PSUTIL
PSUTIL.cpu_percent(interval=1)
我的问题是;我怎样才能获得过去10分钟的cpu使用细节?
答案 0 :(得分:1)
这个想法是:
threading
模块或系统服务/守护程序创建后台任务。与您的主要代码平行的东西; CPU
加载统计信息时,请通过IPC
,files
等将其从后台任务传递出来。确切的解决方案取决于您可以使用的工具。
答案 1 :(得分:1)
使用cronjob在后台运行python脚本
1)打开终端并输入crontab -e
2)编辑文件并编写以下代码以在后台运行python脚本
*/1 * * * * python /yourpath/yourpythonfile.py
3)创建yourpythonfile.py并编写以下代码
import psutil as PSUTIL
with open('/yourpath/yourfile.txt', "a") as myfile:
myfile.write(str(PSUTIL.cpu_percent(interval=1))+"%"'\n')
答案 2 :(得分:0)
要测量CPU使用率,您需要比较两个给定时间的使用情况;你不能从过去得到测量点(除非你存储它,建议@ajsp)。
例如:
import psutil
import time
def calculate(t1, t2):
# from psutil.cpu_percent()
# see: https://github.com/giampaolo/psutil/blob/master/psutil/__init__.py
t1_all = sum(t1)
t1_busy = t1_all - t1.idle
t2_all = sum(t2)
t2_busy = t2_all - t2.idle
if t2_busy <= t1_busy:
return 0.0
busy_delta = t2_busy - t1_busy
all_delta = t2_all - t1_all
busy_perc = (busy_delta / all_delta) * 100
return round(busy_perc, 1)
cpu_time_a = (time.time(), psutil.cpu_times())
# your code taking time
cpu_time_b = (time.time(), psutil.cpu_times())
print 'CPU used in %d seconds: %s' % (
cpu_time_b[0] - cpu_time_a[0],
calculate(cpu_time_a[1], cpu_time_b[1])
)
或者您可以使用cpu_percent(interval=600)
;如果您不希望它阻止脚本中的其他代码,您可能希望在单独的thread中执行此操作。
但如前所述,在这两种情况下,这都不会及时回归;只测量从现在开始到interval
的CPU时间。
如果您只是需要跟踪您的CPU使用情况并且不想重新发明轮子,您可以使用:
这些解决方案可以帮助您保存系统中的指标以进行处理。
答案 3 :(得分:0)
您可以使用os.getloadavg()
查找过去1,5和1中服务器上的平均负载。 15分钟。
可能这对你打算做的事情有用。