получить ссылку на текущий экземпляр InteractiveShell в IPython (пытаясь перехватить% exit) - PullRequest
0 голосов
/ 02 января 2012

Я хотел бы создать ловушку в IPython, которая запускается, когда я делаю Cntl-D,% Exit,% Quit или% exit и% quit и подтверждаю.

Мотивация заключается в том, что я хочуесть поток, который работает в IPython в течение неопределенного времени в фоновом режиме, пока я не нажму Cntl-D для выхода, а затем я хочу сказать, что этот поток должен выйти.Я полагаю, что буду использовать ловушку для отправки сигнала в фоновый поток.

Я думаю, что один из способов сделать это - обернуть IPython :: iplib :: InteractiveShell :: exit.Это возможно?Есть ли лучший способ сделать то, что я пытаюсь сделать?спасибо

1 Ответ

3 голосов
/ 02 января 2012

Самый простой способ сообщить вашему потоку о выходе - это, вероятно, зарегистрировать обработчик atexit .Это стандартная вещь Python, которая не зависит от IPython.

Если вы хотите ссылку на объект InteratctiveShell, в IPython 0.11+ используйте get_ipython().Я думаю, что вы используете более старую версию;попробуйте _ip.

...