Я пишу расширение IPython с магией ячеек, которые вызывают другой исполняемый файл через pexpect
. Он сохраняет этот исполняемый файл в фоновом режиме для жизни ядра. Есть ли где-нибудь крючок, чтобы я мог отправить этот подпроцесс Ctrl-C
при повышении прерывания ядра (например, в меню «Ядро прерывания» в IPython Notebook)?В IPython могут ли расширения обрабатывать прерывания ядра?
1
A
ответ
2
перепроведении в ответ:
IPython прерывает ядро, посылая сигнал SIGINT, тот же самый сигнал, который вызывается при нажатии Ctrl-C в терминале. Таким образом, до тех пор, как вы хотите, чтобы поймать его в то время как ваш собственный код работает, вы можете просто поймать KeyboardInterrupt
, как это:
p.sendline('some command')
try:
p.expect(processing_finished_mark)
except KeyboardInterrupt:
p.sendintr()
Смежные вопросы
- 1. Расширения ядра Vs в IPython
- 2. Restart IPython ядра запускается через «IPython ядра»
- 3. Клонирование активного ядра ipython?
- 4. PyCharm: потерянное окно ядра ipython
- 5. Как правильно обрабатывать прерывания звука?
- 6. Могут ли данные ядра использоваться без tableView?
- 7. Могут ли ядра CUDA быть виртуальными функциями?
- 8. Как правильно обрабатывать прерывания потока
- 9. Могут ли расширения CKAN иметь контроллеры?
- 10. Могут ли быть частные методы расширения?
- 11. Могут ли применяться методы расширения до интерфейсов?
- 12. Могут ли методы расширения иметь общие параметры?
- 13. Могут ли сервисы JSONP обрабатывать большие параметры?
- 14. Могу ли я написать модуль ядра для обработки программного прерывания?
- 15. Освобождение памяти на C без прерывания ядра
- 16. iPython ssh от Windows qtconsole до удаленного ядра iPython
- 17. Как получить временную метку ядра для прерывания?
- 18. BeagleBone Черные прерывания через драйвер ядра
- 19. Установка ядра R для Ipython на Windows
- 20. Приложение java для Android неспособно обрабатывать прерывания
- 21. Почему процессы не могут прервать прерывания?
- 22. расширения контроллера ядра на CodeIgniter
- 23. Ядро ядра IPython умирает при импорте
- 24. Как изменить версию ядра/python для iPython?
- 25. Ошибка ядра Ipython после удаления anaconda
- 26. Как обрабатывать прерывания соединения с Mongoose DB
- 27. Невозможно обрабатывать нулевые указатели в модуле ядра
- 28. Как обрабатывать сетевые прерывания и пул соединений
- 29. Перезагрузка модуля расширения Python из IPython
- 30. Python3 разрешения и установка IPython/расширения jupyter
Вы контрольный подпроцесс в клетке, которая по-прежнему выполнялся, когда вы хотите прервать его? Или из фоновой нити? Или вы только что создали объект pexpect и продолжаете делать что-то еще. С помощью кнопки «Стоп» вы имеете в виду опцию меню прерывания или кнопку отключения ядра на приборной панели? –
@ThomasK Я не уверен, что означает первая часть вашего комментария, но я думаю, что я делаю первый вариант. Расширение запускает подпроцесс, когда он загружается с помощью IPython, а затем реализация магии сотовой ячейки отправляет строки и считывает их вывод. Это происходит в том же потоке, который вызывает клеточную магию. – acfoltzer
И вы хотите, чтобы он был остановлен, когда ядро * выключено * или просто * прервано *? Это разные вещи - вы можете продолжать использовать ядро после его прерывания, но после его завершения процесс ядра исчез. –