使用python获取CPU和内存信息的思路与实现(linux系统)


在Linux系统中,使用Python获取CPU和内存信息,一种常见且高效的方法是调用系统命令并解析其输出。对于CPU信息,你可以使用`/proc/cpuinfo`文件;对于内存信息,`/proc/meminfo`文件提供了详细的内存使用情况。下面是一种实现思路及示例代码:

### 获取CPU信息

CPU信息通常包括CPU型号、核心数、频率等。在`/proc/cpuinfo`文件中,你可以找到这些信息的多个副本(因为Linux将每个逻辑处理器视为一个CPU),所以你可能需要解析并总结这些信息。


import os

def get_cpu_info():
    info = {}
    with open('/proc/cpuinfo', 'r') as f:
        for line in f:
            if ':' in line:
                key, value = line.strip().split(':', 1)
                key = key.strip()
                if key not in info:
                    info[key] = value.strip()
                elif key == 'model name':  # 示例:只保留最后一个model name
                    info[key] = value.strip()
    # 你可以根据需求修改这部分来总结或处理CPU信息
    # 例如,计算物理CPU的数量
    physical_cpus = len(set(info.get('physical id', '').split()))
    info['physical_cpus'] = physical_cpus
    return info

# 示例使用
cpu_info = get_cpu_info()
print(cpu_info)

注意:上面的代码示例中,我假设`model name`是你想要保留的CPU型号信息,并仅保留了最后一个出现的值。实际情况中,你可能需要不同的处理方式。

### 获取内存信息

内存信息包括总内存、可用内存、已用内存等。`/proc/meminfo`文件提供了这些信息。


def get_memory_info():
    info = {}
    with open('/proc/meminfo', 'r') as f:
        for line in f:
            key, value = line.split(':', 1)
            info[key.strip()] = int(value.split()[0])  # 取第一个值,通常是KB单位
    # 转换单位为MB或GB,这里以MB为例
    total_memory = info['MemTotal'] / 1024
    free_memory = info['MemFree'] / 1024
    used_memory = total_memory - free_memory
    info['total_memory_mb'] = total_memory
    info['free_memory_mb'] = free_memory
    info['used_memory_mb'] = used_memory
    return info

# 示例使用
memory_info = get_memory_info()
print(memory_info)

以上代码分别展示了如何在Python中获取Linux系统的CPU和内存信息,并进行了简单的处理和格式化。注意,根据你的具体需求,你可能需要调整这些代码来满足你的特定要求。