2017-09-18 9 views
1

私はデータを準備するためにJupyterノートブックにいくつかの関数を書いていますが、実行にはかなりの時間がかかります。iPython/Jupyterの長時間実行セルは、セル出力を乱さずに実行時ステータス情報をレポートできますか?

In [*]: print "hello" 
     df['expensive_col'] = df.apply(myfunc, axis=1) 

myfuncが、私はそれがどのくらい離れているか、実行に参照するように、ステータス情報を印刷するかどうそれは有用であろう。これの欠点は、Jupyterの出力セルが大きく乱雑になることです。

In [*]: print hello 
     df['expensive_col'] = df.apply(myfunc, axis=1) 

hello 
ix0 
ix1 
ix2 
... 
ix999 
... 
noisy output 
... 

長時間実行しているJupyterセルからステータス更新を出力する方法はありますか?出力セルが乱れることはありませんか?

たとえば、IPython.display.clear_output()を呼び出して印刷されたものをすべて拭くことができましたが、私は高価なもの(hello、上記の例)の前から物を守りたいかもしれません。

答えて

1

あなたができる一つの簡単な事は、このように、代わりに改行のキャリッジリターンにendパラメータセットでprint機能を呼び出すことです:

for i in range(100): 
    print('progress %i' % i, end='\r') 
    # things happen here 

それが効果的に出力を乱雑にせずに、前の行の上に書き込み、フィールド。

さらに先進的なアプローチ(そして魅力的なプログレスバー!)は、tqdm projectをご覧ください。

関連する問題