目的既不是简洁,也不是紧凑,甚至不是优雅;-),而是尝试成为教学法让你接近(或者你是否遇到了伟大的 cpuinfo 模块的麻烦),这可能是一个块:
import re, subprocess, pprint
pp = pprint.PrettyPrinter(indent=2)
cmd = ['cat', '/proc/cpuinfo']
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
if not stdout:
print('ERROR assessing /proc/cpuinfo')
else:
output = stdout.strip().split("\n")
processors = []
element_regex = re.compile(r'processor\t\:\s\d+')
for item in output:
if element_regex.match(item):
processors.append([])
processors[-1].append(item)
cores = []
for processor in processors:
regex = re.compile('(cpu\scores\t\:\s(\d+)|physical\sid\t\:\s (\d+))')
core = [m.group(1) for item in processor for m in [regex.search(item)] if m]
if core not in cores:
cores.append(core)
pp.pprint(cores)
当您的目标主板上有一个嵌入 4 个物理内核的物理 CPU 时,您应该得到如下结果:
[['physical id\t: 0', 'cpu cores\t: 4']]