如何在 Python 中获取当前的 CPU 和 RAM 使用情况?

新手上路,请多包涵

如何在 Python 中获取当前系统状态(当前 CPU、RAM、可用磁盘空间等)?理想情况下,它适用于 Unix 和 Windows 平台。

似乎有几种可能的方法可以从我的搜索中提取它:

  1. 使用诸如 PSI 之类的库(目前似乎没有积极开发并且在多个平台上不受支持)或类似 pystatgrab 的东西(自 2007 年以来似乎没有任何活动并且不支持 Windows)。

  2. 使用特定于平台的代码,例如使用 os.popen("ps") 或类似的 *nix 系统和 MEMORYSTATUSctypes.windll.kernel32 State 中 -State可以将一个 Python 类与所有这些代码片段放在一起。

并不是说这些方法不好,而是是否已经有一种支持良好的多平台方法来做同样的事情?

原文由 lpfavreau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 553
2 个回答

psutil 库 为您提供各种平台上有关 CPU、RAM 等的信息:

psutil 是一个模块,它提供了一个接口,用于使用 Python 以可移植的方式检索有关正在运行的进程和系统利用率(CPU、内存)的信息,实现了 ps、top 和 Windows 任务管理器等工具提供的许多功能。

目前支持 Linux、Windows、OSX、Sun Solaris、FreeBSD、OpenBSD 和 NetBSD,包括 32 位和 64 位架构,Python 版本从 2.6 到 3.5(Python 2.4 和 2.5 的用户可以使用 2.1.3 版本)。


一些例子:

 #!/usr/bin/env python
import psutil
# gives a single float value
psutil.cpu_percent()
# gives an object with many fields
psutil.virtual_memory()
# you can convert that object to a dictionary
dict(psutil.virtual_memory()._asdict())
# you can have the percentage of used RAM
psutil.virtual_memory().percent
79.2
# you can calculate percentage of available memory
psutil.virtual_memory().available * 100 / psutil.virtual_memory().total
20.8

这是提供更多概念和兴趣概念的其他文档:

原文由 Jon Cage 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 psutil 库。在 Ubuntu 18.04 上,pip 从 1-30-2019 开始安装了 5.5.0(最新版本)。旧版本的行为可能有所不同。您可以通过在 Python 中执行此操作来检查您的 psutil 版本:

 from __future__ import print_function  # for Python2
import psutil
print(psutil.__versi‌​on__)

要获取一些内存和 CPU 统计信息:

 from __future__ import print_function
import psutil
print(psutil.cpu_percent())
print(psutil.virtual_memory())  # physical memory usage
print('memory % used:', psutil.virtual_memory()[2])

virtual_memory (元组)将具有系统范围内使用的内存百分比。在 Ubuntu 18.04 上,这对我来说似乎被高估了几个百分点。

您还可以获取当前 Python 实例使用的内存:

 import os
import psutil
pid = os.getpid()
python_process = psutil.Process(pid)
memoryUse = python_process.memory_info()[0]/2.**30  # memory use in GB...I think
print('memory use:', memoryUse)

它给出了 Python 脚本的当前内存使用情况。

psutil 的 pypi 页面 上有一些更深入的示例。

原文由 wordsforthewise 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题