win、linux等环境下python输出cpu、gpu、avx等硬件信息

devtools/2024/11/28 6:04:20/

测试时输出环境信息,方便判断是否可以开启部分优化

python"># 环境: 20241030 win10 vs2022 python3.9.13
# vs2022时,在 C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Scripts 下运行 pip install import os
import sys
import psutil # pip install psutil
import cpuinfo # pip install py-cpuinfo
import subprocess
import platform# 获取 CPU 插槽数
def get_cpu_socket_count():"""获取 CPU 插槽数"""try:if platform.system() == "Windows":# 获取 SocketDesignation 字段的输出output = subprocess.check_output('wmic cpu get SocketDesignation', shell=True, text=True)# 按行分割,排除第一行的标题和空行lines = [line.strip() for line in output.splitlines() if line.strip() and "SocketDesignation" not in line]return len(lines)  # 返回有效行数作为插槽数elif platform.system() == "Linux":output = subprocess.check_output('lscpu', shell=True, text=True)for line in output.splitlines():if "Socket(s):" in line:return int(line.split(":")[1].strip())except Exception as e:print(f"获取 CPU 插槽数时出错: {e}")return "未知"def get_cpu_model():"""获取当前 CPU 的型号"""try:if platform.system() == "Windows":output = subprocess.check_output("wmic cpu get Name", shell=True, text=True)lines = [line.strip() for line in output.strip().split("\n") if line.strip()]if len(lines) > 1:return lines[1].strip()  # 返回型号信息elif platform.system() == "Linux":output = subprocess.check_output("cat /proc/cpuinfo | grep 'model name'", shell=True, text=True)for line in output.splitlines():if "model name" in line:return line.split(":")[1].strip()elif platform.system() == "Darwin":  # macOSoutput = subprocess.check_output("sysctl -n machdep.cpu.brand_string", shell=True, text=True)return output.strip()except Exception as e:print(f"获取 CPU 型号时出错: {e}")return "未知型号"def get_cpu_info():"""输出运行环境的cpu信息"""cpu_model = get_cpu_model()socket_count = get_cpu_socket_count()physical_cores = psutil.cpu_count(logical=False)  # 物理核心数logical_cores = psutil.cpu_count(logical=True)    # 逻辑核心数# 获取 CPU 缓存信息cpu_info = cpuinfo.get_cpu_info()cache_info = {'L1': cpu_info.get('l1_cache_size', 'Unknown'),'L2': cpu_info.get('l2_cache_size', 'Unknown'),'L3': cpu_info.get('l3_cache_size', 'Unknown')}# 获取所有指令集信息cpu_flags = cpu_info.get('flags', [])# 检测特定AVX 指令集支持avx128_support = 'avx' in cpu_flagsavx256_support = 'avx2' in cpu_flagsavx512_support = any(flag.startswith('avx512') for flag in cpu_flags)# 输出 CPU 信息print("\n--- CPU 信息 ---")print(f"CPU 型号: {cpu_model}")print(f"CPU 插槽数 (Sockets): {socket_count}")print(f"物理核心数 (Physical Cores): {physical_cores}")print(f"逻辑核心数 (Logical Cores): {logical_cores}")# 输出缓存信息print("\n--- 缓存信息 ---")for level, size in cache_info.items():print(f"{level} Cache Size: {size}")print(f"是否支持 AVX 128 指令集: {'是' if avx128_support else '否'}")print(f"是否支持 AVX 256 指令集: {'是' if avx256_support else '否'}")print(f"是否支持 AVX 512 指令集: {'是' if avx512_support else '否'}")# 输出所有支持的指令集print("\n支持的指令集 (Flags):")for flag in cpu_flags:print(f"- {flag}")# 检查 CPU 信息
get_cpu_info()
# 检查GPU是否可用
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))

http://www.ppmy.cn/devtools/137584.html

相关文章

“蜀道山”高校联合公益赛 Web (部分)

文章目录 奶龙牌WAF海关警察训练平台恶意代码检测器 奶龙牌WAF <?php if ($_SERVER[REQUEST_METHOD] POST && isset($_FILES[upload_file])) {$file $_FILES[upload_file];if ($file[error] UPLOAD_ERR_OK) {$name isset($_GET[name]) ? $_GET[name] : basen…

【Flink】快速理解 FlinkCDC 2.0 原理

快速理解 FlinkCDC 2.0 原理 要详细理解 Flink CDC 原理可以看看这篇文章&#xff0c;讲得很详细&#xff1a;深入解析 Flink CDC 增量快照读取机制 (https://juejin.cn/post/7325370003192578075)。 FlnkCDC 2.0&#xff1a; Flink 2.x 引入了增量快照读取机制&#xff0c;…

【Bug】el-date-picker组件时间差

这个组件默认是国际标准时间 2024-11-27T07:56:37.000Z 表示的是 UTC 时间。如果你当前所在的时区是 UTC8&#xff08;例如中国&#xff09;&#xff0c;那么这个时间实际上是比你选择的时间早 8 个小时 T表示分隔符&#xff0c;Z表示的是UTC 解决&#xff1a;给el-date-pic…

一次SQL注入深入利用

1. 在寻找某处的资产时找到一个查询的页面&#xff1a; https://xxxxxxxxxxx/index.php/all 随便查询一下&#xff0c;然后抓包: 测试发现这里存在注入&#xff1a; 由于有报错信息&#xff0c;首先考虑报错注入&#xff1a; Poc&#xff1a; andupdatexml(0x7e,concat(0x7e,…

第九章 Spring Boot快速⼊⻔ —— Spring Boot整合mybatis-plus

前言: MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上进行了扩展,旨在简化MyBatis的操作并提高开发效率。适用于各种需要进行数据库操作的场景,特别是需要频繁进行CRUD操作的场景。它简化了MyBatis的使用,使得开发者可以更加专注于业务逻辑的实现,而不…

区块链:比特币-Binance

写在前面&#xff1a;相对于Tran和BNB而言&#xff0c;Binance不支持智能合约&#xff1b;大约每 10分钟 生成一个新区块 一、认识Binance 官方网站&#xff1a;Blockchain Explorer - Bitcoin Tracker & More | Blockchain.com 官方文档&#xff1a;Authentication – I…

【DVWA】File Inclusion文件包含实战

安能有术无道有道无心&#xff0c;乐得仁心仁义正心行道。 1.File Inclusion(Low) 相关代码分析 <?php// The page we wish to display $file $_GET[ page ];?>可以看到&#xff0c;服务器端对page参数没有做任何的过滤跟检查。 服务器期望用户的操作是点击下面的…

如何使用ssh登录到Google Cloud创建的实例

要通过 SSH 登录到 Google Cloud 创建的实例&#xff0c;你可以按照以下步骤操作&#xff1a; 方法一&#xff1a;通过 Google Cloud Console 登录 进入 Google Cloud Console 登录 Google Cloud Console。 选择实例 导航到左侧菜单的 Compute Engine > 虚拟机实例 页面。找…