【问题标题】:Python - get process names,CPU,Mem Usage and Peak Mem Usage in windowsPython - 在 Windows 中获取进程名称、CPU、内存使用情况和峰值内存使用情况
【发布时间】:2013-04-25 22:41:46
【问题描述】:

我想获取所有进程名称、CPU、内存使用率和峰值内存使用率的列表。我希望我可以使用 ctypes。但我很高兴听到任何其他选择。感谢您的宝贵时间。

【问题讨论】:

  • 你不能比psutil做得更好
  • 在 Windows 中,您最好的选择可能是性能计数器。

标签: python windows memory process cpu


【解决方案1】:

您可以使用psutil

例如获取进程名列表:

process_names = [proc.name() for proc in psutil.process_iter()]

有关 CPU 的信息,请使用 psutil.cpu_percentpsutil.cpu_times。 有关内存使用情况的信息,请使用psutil.virtual_memory

请注意,psutil 适用于 Linux、OS X、Windows、Solaris 和 FreeBSD 以及 python 2.4 到 3.3。

【讨论】:

  • psutil 能否每个进程获取网络统计信息?我用谷歌搜索并阅读了大约一个小时的文档,没有找到任何东西
  • @chester89 这与这个问题无关。请尝试在 SO 中搜索有关网络使用的 psutil 问题,然后,如果您还没有找到满意的答案,请继续提出新的问题。无论如何,您应该查看Process.connections
  • 如何通过这个模块知道它正在使用的带宽
【解决方案2】:

此 Python 3.3 代码适用于带有 UAC 的 Windows 7。

import psutil
import time

def processcheck(seekitem):
    plist = psutil.get_process_list()
    str1=" ".join(str(x) for x in plist)
    if seekitem in str1:
        print ("Requested process is running")   

processcheck("System")

【讨论】:

    【解决方案3】:

    我喜欢在 Windows 上使用wmic。您可以从命令行运行它,因此您可以从 Python 运行它。

    from subprocess import Popen,PIPE
    proc = Popen('wmic cpu',stdout=PIPE, stderr=PIPE)
    print str(proc.communicate())
    

    使用wmic,您可以轻松获取进程、cpu 和内存信息。只需使用wmic cpuwmic processwmic memphysical。您还可以使用wmic <alias> get <attribute> 过滤掉某些属性。您可以使用wmic /? 获取所有命令的列表。希望对您有所帮助!

    您可以在此处查看 WMIC 的官方文档:http://technet.microsoft.com/en-us/library/bb742610.aspx

    【讨论】:

    • 谢谢,那太好了,但它需要以管理员身份运行,有没有办法在命令行中使用它之前以管理员身份运行它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2010-10-24
    相关资源
    最近更新 更多