本文目录导读:

获取内存速度(频率)通常需要通过操作系统提供的接口或读取硬件信息,以下是几种常见操作系统下的脚本获取方法:
Linux 系统
使用 dmidecode(推荐)
# 获取内存频率(MHz) sudo dmidecode -t memory | grep -i speed
使用 lshw
# 需要安装 lshw sudo lshw -class memory | grep -i speed
Python 脚本(无需 root)
import subprocess
import re
def get_memory_speed():
try:
result = subprocess.run(['dmidecode', '-t', 'memory'],
capture_output=True, text=True)
output = result.stdout
# 提取速度信息
speeds = re.findall(r'Speed:\s+(\d+)\s*MHz', output)
if speeds:
return speeds
except:
return None
print(get_memory_speed())
Windows 系统
PowerShell 脚本
# 获取内存速度 Get-WmiObject Win32_PhysicalMemory | Select-Object Speed # 或使用 CIM Get-CimInstance -ClassName CIM_PhysicalMemory | Select-Object Speed
批处理脚本(使用 WMIC)
wmic memorychip get speed
Python 脚本(需要 pywin32)
import subprocess
import json
def get_memory_speed_windows():
result = subprocess.run(['wmic', 'memorychip', 'get', 'speed'],
capture_output=True, text=True)
return result.stdout.strip()
print(get_memory_speed_windows())
macOS 系统
使用 system_profiler
# 获取内存信息 system_profiler SPMemoryDataType | grep "Speed"
使用 sysctl
# 可能需要 root 权限 sysctl hw.memspeed
跨平台 Python 脚本
import platform
import subprocess
def get_memory_speed():
system = platform.system().lower()
if system == "linux":
try:
result = subprocess.run(['dmidecode', '-t', 'memory'],
capture_output=True, text=True)
for line in result.stdout.split('\n'):
if 'Speed' in line and 'MHz' in line:
return line.strip()
except:
return "无法获取 (需要root权限)"
elif system == "windows":
try:
result = subprocess.run(['wmic', 'memorychip', 'get', 'speed'],
capture_output=True, text=True)
return result.stdout.strip()
except:
return "无法获取"
elif system == "darwin": # macOS
try:
result = subprocess.run(['system_profiler', 'SPMemoryDataType'],
capture_output=True, text=True)
for line in result.stdout.split('\n'):
if 'Speed' in line:
return line.strip()
except:
return "无法获取"
return "不支持的操作系统"
print(get_memory_speed())
注意事项
- 权限问题:Linux 下
dmidecode通常需要 root 权限 - 虚拟化环境:在虚拟机中可能无法获取真实的内存速度
- 多根内存条:可能返回多个值,代表不同插槽的内存速度
- 数据类型:返回的速度通常是 MHz(兆赫兹),DDR4 常见 2133-3200 MHz
选择哪种方法取决于你的具体需求和操作系统环境。