14

IPython Notebook マジック関数の結果のオブジェクトをキャプチャしようとしています。具体的には%timeit

というわけで以下のコード...

import time
def say_hello(n):
    time.sleep(n)
    print "hello"

t = %timeit say_hello(5)

標準出力に出力:

1 loops, best of 3: 5 s per loop

%timeit say_hello(5)ただし、変数の結果をキャプチャしたいと思いますt

という結果のオブジェクトTimeitResultが によって生成され%timeitますが、ノートブック内からアクセスする方法がわかりません。

トリックを使用して stdout を手動でキャプチャするよりも、よりクリーンなソリューションが必要sys.stdoutです (このコードはプレゼンテーションの一部になるため、できるだけ簡単に保つようにしています)。誰にもアイデアはありますか?

4

3 に答える 3

21

リンク先のソース ファイルでは、docstring は timeit マジック関数を実行するためのオプションを示しています。そのうちの1つはオブジェクトの結果を返しています:

-o: return a TimeitResult that can be stored in a variable to inspect
        the result in more details.

したがって、実行すると

obj = %timeit -o somefunc()

obj返された結果オブジェクトを参照します (ヒント: オブジェクトでタブ補完を使用すると、そのオブジェクトの属性が表示されます)。

于 2014-08-13T15:15:37.783 に答える