バイオインフォマティクス初心者の日常

バイオインフォマティクス関連の研究・勉強などなど

Linux環境上のperlプログラムでCPU数を確認する方法

perlで自作の研究用プログラムを使っていて、プログラム実行の度に毎回CPU数の設定をするのは少し面倒くさかったので、perlで自動的にCPU数を確認する方法を調べてみた。

LinuxシェルコマンドでCPU数を調べる

Linux環境上でコマンドからCPU数を確認する方法は、ネット上で多くの人が紹介しているように、

$ grep -c processor /proc/cpuinfo

上記のコマンド等を実行することで、Linuxが認識しているCPU情報を記述した "/proc/cpuinfo" ファイルからCPU数を確認できます。このコマンドをperlプログラム内で実行すれば、CPU数を確認できそう。

perlプログラムからCPU数を調べる

perlプログラムでは、組み込み関数 "system" を使って基本的にコマンドを実行しますが、直接コマンドの実行結果をプログラム内の変数に受け渡すことは出来ません。

そこで、perlの組み込み関数を詳しく調べると、"qx" という組み込み関数で、直接コマンドの実行結果を変数に受け渡すことができた。

Perlプログラム例( cpu_search.pl )

$cpu_num = qx(grep -c processor /proc/cpuinfo);
chomp($cpu_num); 
print $cpu_num, "\n";

このプログラムを実行すると、$cpu_num にCPU数が入力され、その情報を出力する。
"qx" で受け取った結果は改行が入るので、プログラム内で外部プログラムのオプション設定に$cpu_numを使うときには、"chomp" で改行を消去しないとエラーが出るので注意してください。

perlでプログラムを作るときに、デフォルトで使用PCの最大CPU数を使えるように設定できたので、実行環境によって使用CPU数を変更することがなくなり、少し便利になりました。