time.clock()じゃだめなのかと

  • 投稿日:
  • by
  • カテゴリ:

とあるpythonモジュールをWindows環境でeasy_installしようとすると。

こんなエラー。

  File "C:\Python27\Lib\ctypes\__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
TypeError: expected string or Unicode object, NoneType found

 

該当ソースを見ると、

LIBRT = CDLL(find_library("rt"))

なるほどlibrtのお出ましですか。

 

ですが2.5のドキュメントにはすでに、clock()が存在します。

14.2 time -- 時刻データへのアクセスと変換

clock( )

Unixでは、現在のプロセッサ時間秒を浮動小数点数で返します。時刻の精度および ``プロセッサ時間 (processor time)'' の定義そのものは同じ名前の C 関数に依存します。いずれにせよ、この関数は Python のベンチマーク や計時アルゴリズムに使われています。

Windows では、最初にこの関数が呼び出されてからの経過時間を wall-clock 秒で返します。この関数は Win32 関数 QueryPerformanceCounter() に基づいていて、その精度は通常 1 マイクロ秒以下です。

 

ちょっとググると、こんな解説記事も出てきます。

time – 時間を扱う関数 - Python Module of the Week

 

レガシィなCコードから引っ越したの?という感想。

 

(2017.07.17追記)

time.clock()だとプロセッサ時間になっちゃうんですね。こりゃ早合点しました。反省至極。