From bb0d7f3f56024bc39a803759205aaab9785c0f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E6=9C=88?= Date: Wed, 21 Aug 2024 21:37:26 +0800 Subject: [PATCH] Fix arm system cpu frequency retrieval (#385) * Fix: Disable CPU frequency retrieval on macOS systems with Apple Silicon (closes #384) * Fix: Solve the single quote problem --------- Co-authored-by: liuyue --- backend/utils/server_info.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/backend/utils/server_info.py b/backend/utils/server_info.py index 62dd3472..ee1374a9 100644 --- a/backend/utils/server_info.py +++ b/backend/utils/server_info.py @@ -53,11 +53,28 @@ class ServerInfo: """获取 CPU 信息""" cpu_info = {'usage': round(psutil.cpu_percent(interval=1, percpu=False), 2)} # % - # CPU 频率信息,最大、最小和当前频率 - cpu_freq = psutil.cpu_freq() - cpu_info['max_freq'] = round(cpu_freq.max, 2) # MHz - cpu_info['min_freq'] = round(cpu_freq.min, 2) # MHz - cpu_info['current_freq'] = round(cpu_freq.current, 2) # MHz + # 检查是否是 Apple M系列芯片 + if platform.system() == 'Darwin' and 'arm' in platform.machine().lower(): + cpu_info['max_freq'] = 0 + cpu_info['min_freq'] = 0 + cpu_info['current_freq'] = 0 + else: + try: + # CPU 频率信息,最大、最小和当前频率 + cpu_freq = psutil.cpu_freq() + cpu_info['max_freq'] = round(cpu_freq.max, 2) # MHz + cpu_info['min_freq'] = round(cpu_freq.min, 2) # MHz + cpu_info['current_freq'] = round(cpu_freq.current, 2) # MHz + except FileNotFoundError: + # 处理无法获取频率的情况 + cpu_info['max_freq'] = 0 + cpu_info['min_freq'] = 0 + cpu_info['current_freq'] = 0 + except AttributeError: + # 处理属性不存在的情况(更安全的做法) + cpu_info['max_freq'] = 0 + cpu_info['min_freq'] = 0 + cpu_info['current_freq'] = 0 # CPU 逻辑核心数,物理核心数 cpu_info['logical_num'] = psutil.cpu_count(logical=True)