Как я могу получить cpuinfo в python 2.4. Я хочу определить количество процессоров в машине. (Код должен быть независимым от ОС). Я написал код для Linux, но не знаю, как заставить его работать для Windows.
import subprocess, re
cmd = 'cat /proc/cpuinfo |grep processor |wc'
d = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
lines = d.stdout.readlines()
lines = re.split('\s+', lines[0])
number_of_procs = int(lines[1])
Предполагая, что у меня нет cygwin, установленного на машине Windows, у меня просто есть python2.4. Пожалуйста, дайте мне знать, если есть какой-то модуль, который может быть вызван для этой цели, или любая помощь для написания кода для этой функции.
Спасибо, Sandhya
Здесь на старом решении, написанном Брюсом Эккелом, которое должно работать на всех основных платформах: http://codeliberates.blogspot.com/2008/05/detecting-cpuscores-in-python.html
def detectCPUs(): """ Detects the number of CPUs on a system. Cribbed from pp. """ # Linux, Unix and MacOS: if hasattr(os, "sysconf"): if os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"): # Linux & Unix: ncpus = os.sysconf("SC_NPROCESSORS_ONLN") if isinstance(ncpus, int) and ncpus > 0: return ncpus else: # OSX: return int(os.popen2("sysctl -n hw.ncpu")[1].read()) # Windows: if os.environ.has_key("NUMBER_OF_PROCESSORS"): ncpus = int(os.environ["NUMBER_OF_PROCESSORS"]); if ncpus > 0: return ncpus return 1 # Default
В python 2.6 +:
>>> import multiprocessing
>>> multiprocessing.cpu_count()
2
Обновление Помечено для закрытия из-за дублирования вопроса. См. Второй ответ в Как узнать количество процессоров, использующих python, для способа сделать это без модуля многопроцессорности.
Ну, это не будет кросс-платформой, поскольку вы полагаетесь на файловую систему /proc, чего нет в Windows (хотя, да, это было бы эпически здорово, если бы это было...)
Один из вариантов состоит в том, чтобы использовать несколько "if" для определения типа платформы, а затем для Linux захватить вашу информацию из /proc/cpuinfo и для Windows захватить вашу информацию с WMI (Win32_Processor) (http://www.activexperts. ком/администратор/скрипты/WMI/питон/0356/)
platform.processor() должен быть несколько независимым от платформы. Как говорят документы, не все платформы реализуют его.
Вы можете использовать cpuidpy, который использует инструкцию CPU CPU x86 для получения информации о процессоре.