2011-02-08 62 views
1

如何在python 2.4中获得cpuinfo。我想确定一台机器中的处理器数量。 (代码应该与操作系统无关)。我已经编写了Linux代码,但不知道如何使它适用于Windows。在python 2.4 for windows中的cpuinfo

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]) 

假设我没有安装在Windows机器上的cygwin,我只是有python2.4。 请让我知道,如果有一些模块可以为此目的调用,或任何帮助编写此功能的代码。

感谢, 桑德亚

+1

可能重复的[如何找出python中的CPU数量](http://stackoverflow.com/questions/1006289/how-to-find-out-the-number-of-cpus-in-python ) – sdolan 2011-02-08 07:01:14

回答

1

这里有一个由Bruce Eckel的书面旧的解决方案,应该在所有主要的平台上工作: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

非常感谢您的帮助。 – 2011-02-09 04:22:02

1

好了,不会是跨平台的,因为你靠的/ proc文件系统,这是一件好事Windows没有(虽然,是的,这将是如果epically真棒它确实...)

一种选择是使用几个“if”来确定平台类型,然后Linux从/ proc/cpuinfo获取信息,并从Windows获取WMI(Win32_Processor)的信息(http ://www.activexperts.com/admin/scripts/wmi/python/0356/)

platform.processor()应该有点平台inde尽管如此。正如文档所说,并非所有平台都能实现它。

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

0

你可以使用cpuidpy,它采用86 CPUID指令获得CPU的信息。

5

关于Python 2.6+:

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

更新 标记为关闭,因为重复的问题。请参阅How to find out the number of CPUs using python中的第二个回答,了解如何在没有多处理模块的情况下执行此操作。