Перехват KeyboardInterrupt в сценарии, который был `execfile` от другого процесса - PullRequest
0 голосов
/ 06 апреля 2019

вопрос:

Я пишу скрипт, который вызывается с execfile другим процессом, который я не могу контролировать. Я пытаюсь поймать KeyboardInterrupt, но, кажется, команда перехвачена вызывающим процессом. Это типично для execfile?

справочная информация:

Этот другой процесс, FWIW, это Abaqus / CAE, который имеет API-интерфейс Python. Пользовательские скрипты могут вызываться из командной строки с помощью:

abaqus cae nogui=my_script

Это инициализирует встроенную среду Abaqus Python, которая выполняет различные скрытые операции и делает доступными для импорта несколько собственных модулей Python. Затем Abaqus выполняет сценарий пользователя, используя execfile().

попыток на данный момент:

Случай 1) Abaqus отлавливает ctl-c из командной строки и сообщает, что он прерывает программу. Это происходит даже без включения исключения KeyboardInterrupt в пользовательский скрипт. Проблема: пользовательский скрипт продолжает работать в фоновом режиме.

Случай 2) Добавлен KeyboardInterrupt try-кроме пользовательского скрипта. Abaqus ловит ctl-c из командной строки и сообщает, что он прерывает программу - точно так же, как в случае 1. Проблема: Опять же, пользовательский сценарий продолжает выполняться в фоновом режиме, и исключение не выводится на консоль.

...