cpuinfo в python 2.4 для windows

1

Как я могу получить 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

Теги:
cpu-cores

4 ответа

1
Лучший ответ

Здесь на старом решении, написанном Брюсом Эккелом, которое должно работать на всех основных платформах: 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
  • 0
    Спасибо большое за вашу помощь.
5

В python 2.6 +:

>>> import multiprocessing
>>> multiprocessing.cpu_count()
2

Обновление Помечено для закрытия из-за дублирования вопроса. См. Второй ответ в Как узнать количество процессоров, использующих python, для способа сделать это без модуля многопроцессорности.

1

Ну, это не будет кросс-платформой, поскольку вы полагаетесь на файловую систему /proc, чего нет в Windows (хотя, да, это было бы эпически здорово, если бы это было...)

Один из вариантов состоит в том, чтобы использовать несколько "if" для определения типа платформы, а затем для Linux захватить вашу информацию из /proc/cpuinfo и для Windows захватить вашу информацию с WMI (Win32_Processor) (http://www.activexperts. ком/администратор/скрипты/WMI/питон/0356/)

platform.processor() должен быть несколько независимым от платформы. Как говорят документы, не все платформы реализуют его.

http://docs.python.org/library/platform.html

0

Вы можете использовать cpuidpy, который использует инструкцию CPU CPU x86 для получения информации о процессоре.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню