pythonには、インタープリタを閉じる前に実行する関数を登録するatexitモジュールがあります。 This questionなぜatexitが呼び出されないのかipxthonの代わりにatexit
%run <name>
で実行されたものを終了する前に、ipython
の代わりに機能を登録する方法があるのでしょうか?理想的には、インタープリタによって のいずれかのモジュールに登録機能を持つデコレータを作成したいと考えています。
pythonには、インタープリタを閉じる前に実行する関数を登録するatexitモジュールがあります。 This questionなぜatexitが呼び出されないのかipxthonの代わりにatexit
%run <name>
で実行されたものを終了する前に、ipython
の代わりに機能を登録する方法があるのでしょうか?理想的には、インタープリタによって のいずれかのモジュールに登録機能を持つデコレータを作成したいと考えています。
おかげでトーマスKさんに感謝します。彼が答えを書く場合、私は彼を受け入れます。
# exit_register runs at the end of ipython %run or the end of the python interpreter
try:
def exit_register(fun, *args, **kwargs):
""" Decorator that registers at post_execute. After its execution it
unregisters itself for subsequent runs. """
def callback():
fun()
ip.events.unregister('post_execute', callback)
ip.events.register('post_execute', callback)
ip = get_ipython()
except NameError:
from atexit import register as exit_register
@exit_register
def callback():
print('I\'m done!')
print('Running')
これは素晴らしいです。追加する1つのこと。 'atexit.register'は引数とキーワード引数を取ることができます。 'exit exit_register(fun、* args、** kwargs)'と 'fun(* args、** kwargs)'を介してこれを許可するために 'exit_register'を変更することを検討してください。 – JesterEE
@JesterEE。それに言及してくれてありがとう。一定 –
あり、具体的%のrun' '後に発火する何かがありませんが、いずれかの[カスタム魔法を定義]ができ(http://ipython.readthedocs.io/:それ以外の場合は、コードのこの作品は、他の誰かに利益をもたらすかもしれません実行するために '%run'と何らかのアクションを実行するか、または[post_run_cellコールバックを提供する](http://ipython.readthedocs.io/en/stable/config/callbacks.html)を実行するには、en/stable/config/custommagics.html各入力が実行された後。 –