关于python中使用psutil获取进程所占CPU的方法

HL 2014-09-21 09:58:07
获取PID为4420和4421的进程所占CPUU。

import psutil
p1=psutil.Process(4420)
p12=psutil.Process(4421)
print p1.get_cpu_percent(interval=1)
print p2.get_cpu_percent(interval=1)

get_cpu_percent这个方法的参数interval究竟是怎么作用的?如果使用interval=0 那返回的结果就一直是0.

如果参数值传1,那得到的4420和4421的cpu就不是同一时间点的,而是相差1秒。我想得到二者在同一时间点的CPU,不知道有啥办法没?
...全文
1273 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu_bao_xiang 2014-12-15
  • 打赏
  • 举报
回复
引用 1 楼 panghuhu250 的回复:
首先, cpu_percent是对一个时间段的统计, 而不是对一个时间点的统计. cpu_percent的文档中提到:
引用
When interval is 0.0 or None compares process times to system CPU times elapsed since last call, returning immediately. That means the first time this is called it will return a meaningless 0.0 value which you are supposed to ignore.
所以你可以对每个process object调用两回cpu_percent, 都用interval=None做参数. 第一次相当于启动"秒表", 第二次相当于读取"秒表", 所有的调用都是即时返回的, 所以所得到的结果几乎是对同一时间断统计得到的.

In [163]: def get_cpu_percent(ids, interval=1.0):
     ...:     processes = [psutil.Process(pid=i) for i in ids]
     ...:     for p in processes: 
     ...:         p.cpu_percent(interval=None)
     ...:     time.sleep(interval)
     ...:     percents = [p.cpu_percent(interval=None) for p in processes]
     ...:     return percents
我用psutil模块在win7下为何只能获取到当前用户下进程的信息,访问其他用户下进程的信息则报AccessDenied ?,求解决!,或者告诉我其他获取进程信息的方法,谢谢了!
panghuhu250 2014-09-21
  • 打赏
  • 举报
回复
首先, cpu_percent是对一个时间段的统计, 而不是对一个时间点的统计. cpu_percent的文档中提到:
引用
When interval is 0.0 or None compares process times to system CPU times elapsed since last call, returning immediately. That means the first time this is called it will return a meaningless 0.0 value which you are supposed to ignore.
所以你可以对每个process object调用两回cpu_percent, 都用interval=None做参数. 第一次相当于启动"秒表", 第二次相当于读取"秒表", 所有的调用都是即时返回的, 所以所得到的结果几乎是对同一时间断统计得到的.

In [163]: def get_cpu_percent(ids, interval=1.0):
     ...:     processes = [psutil.Process(pid=i) for i in ids]
     ...:     for p in processes: 
     ...:         p.cpu_percent(interval=None)
     ...:     time.sleep(interval)
     ...:     percents = [p.cpu_percent(interval=None) for p in processes]
     ...:     return percents

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧