Я использую GNU Parallel для запуска скрипта Python для списка различных аргументов. Внутри скрипта Python я пишу данные в файл (на самом деле имя файла является аргументом скрипта). Сценарий Python записывает данные в файл после обработки N попыток, где N — еще один аргумент. Следовательно, данные не записываются до тех пор, пока не будут завершены все испытания. Но время на прохождение суда может варьироваться в зависимости от количества тестовых аргументов. По этой причине, если сценарий занимает слишком много времени для определенного набора аргументов, сценарий позволяет мне вызвать ошибку KeyboardInterrupt (Ctrl+C) и записать полученные данные перед завершением.
Однако при использовании GNU Parallel использование Ctrl+C уничтожит параллельную команду и полностью остановит задания Python, поэтому данные пока не записываются.
Можно ли вызвать KeyboardInterrupt в этих сценариях Python, чтобы они закончили обработку ошибки до того, как параллельный режим будет уничтожен? В идеале это должно выглядеть примерно так: 1. Выполнить parallel python script.py ::: args
, 2. Через некоторое время отменить с помощью Ctrl+C, 3. Parallel сообщает скриптам Python, что нужно увидеть прерывание клавиатуры (или любую другую ошибку, это не имеет значения) и Parallel приостанавливает ждать завершения обработки заданий Python, 4. Параллельное завершение, 5. У меня есть файлы с данными, полученными за это время.
Примечание. Мне нужен ответ, который не просит переписать метод записи данных скрипта Python.