1

Python 2.4でcpuinfoを取得するにはどうすればよいですか? マシン内のプロセッサの数を特定したいと考えています。(コードは OS に依存しない必要があります)。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])

Windowsマシンにcygwinがインストールされていないと仮定すると、python2.4しかありません。この目的で呼び出すことができるモジュールがあるかどうか、またはこの機能のコードを記述するためのヘルプがあるかどうかを教えてください。

ありがとう、サンディア

4

5 に答える 5

5

Python 2.6 以降の場合:

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

更新 質問が重複しているため、終了のマークが付けられました。multiprocessing モジュールを使用せずに行う方法については、 Python を使用して CPU の数を調べる方法の 2 番目の回答を参照してください。

于 2011-02-08T06:05:46.180 に答える
1

Windows にはない /proc ファイルシステムに依存しているため、これはクロスプラットフォームではありません (ただし、そうであれば、非常に素晴らしいことです...)

1 つのオプションは、いくつかの "if" を使用してプラットフォームの種類を決定することです。次に、Linux の場合は /proc/cpuinfo から情報を取得し、Windows の場合は WMI (Win32_Processor) (http://www.activexperts.com/admin) から情報を取得します。 /scripts/wmi/python/0356/)

ただし、 platform.processor() はプラットフォームに依存しないはずです。ドキュメントが言うように、すべてのプラットフォームがそれを実装しているわけではありません。

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

于 2011-02-08T05:40:42.077 に答える
1

Bruce Eckel によって書かれた古いソリューションは、すべての主要なプラットフォームで動作するはずです: http://codeliberates.blogspot.com/2008/05/detecting-cpuscores-in-python.html

def detectCPUs():
 """
 システム上の CPU の数を検出します。ppからクリブ。
 """
 # Linux、Unix、MacOS:
 if hasattr(os, "sysconf"):
     os.sysconf_names.has_key("SC_NPROCESSORS_ONLN") の場合:
         # Linux & Unix:
         ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
         isinstance(ncpus, int) かつ ncpus > 0 の場合:
             ncpus を返す
     else: # OSX:
         return int(os.popen2("sysctl -n hw.ncpu")[1].read())
 # ウィンドウズ:
 os.environ.has_key("NUMBER_OF_PROCESSORS") の場合:
         ncpus = int(os.environ["NUMBER_OF_PROCESSORS"]);
         ncpus > 0 の場合:
             ncpus を返す
 return 1 # デフォルト
于 2011-02-08T05:47:16.607 に答える
0

x86CPUID命令を使用してCPU情報を取得するcpuidpyを使用できます。

于 2011-02-08T05:52:07.737 に答える