cpuinfo в python 2.4 для windows - PullRequest
       59

cpuinfo в python 2.4 для windows

1 голос
/ 08 февраля 2011

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

Ответы [ 4 ]

5 голосов
/ 08 февраля 2011

На питоне 2.6 +:

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

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

1 голос
/ 08 февраля 2011

Вот старое решение, написанное Брюсом Эккелем, которое должно работать на всех основных платформах: 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
1 голос
/ 08 февраля 2011

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

Один из вариантов - использовать несколько «если» для определения типа платформы, а затем для Linux получить информацию из / proc / cpuinfo, а для Windows - из WMI (Win32_Processor) (http://www.activexperts.com/admin/scripts/wmi/python/0356/)

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

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

0 голосов
/ 08 февраля 2011

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

...