У меня есть скрипт python, который выполняет некоторые задания. Я использую multiprocessing.Pool
, чтобы несколько рабочих выполняли некоторые команды для меня.Как запустить очистку при завершении скрипта Python
Моя проблема в том, когда я пытаюсь завершить сценарий. Когда я нажимаю Ctrl-C, я хотел бы, чтобы каждый работник немедленно очищал свой эксперимент (это какой-то пользовательский код или даже команда подпроцесса, а не только освобождение блокировок или памяти) и останавливается.
Я знаю, что могу поймать Ctrl-C с обработчиком сигнала. Как я могу заставить всех текущих работающих работников multiprocessing.Pool
завершить работу, все еще выполняя команду очистки?
Pool.terminate()
не будет полезен, так как процессы будут прекращены без очистки.
Нет, он говорит: «Примечание: функции зарегистрированные через этот модуль не вызывается, когда программа убит сигнал ". И мне нужно, чтобы он был убит сигналом –
«убитым сигналом». Я думаю, что это означает, что он убит сигналом, который вы явно не поймаете и не обработаете сами. Если вы используете обработчик сигнала Python, чтобы поймать Ctrl-C и обрабатывать его самостоятельно, вы можете делать то, что вам нравится в вашем обработчике. –