2011-02-08 60 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中的第二個回答,瞭解如何在沒有多處理模塊的情況下執行此操作。