Вопрос, который я часто задавал, но пока не нашел решения, подходящего для моей проблемы. Поэтому я был бы признателен за помощь в улучшении как моего кода, так и моего понимания Python.
. Я работаю над большим фрагментом кода, который имеет Grammatic Evolution и работает в нескольких вложенных (на данный момент неизбежных) классы.
Базовый класс (Geneti c) обрабатывает совокупность, каждый член совокупности является экземпляром класса Individual и оценивается с использованием класса Algorithm. Чтобы избежать чрезмерного усложнения - код, который выполняется в несколько слоев (с добавлением имитации Spice к миксу) и работает в течение ... довольно продолжительного времени - часов в некоторых случаях.
Это причина, почему я начал искать решение, которое позволило бы мне остановить выполнение таким образом, чтобы не все испортить. Если я использую обычную опцию ctrl + c, это просто уничтожает все и заставляет меня перезапустить ядро и потерять все данные.
Я думаю о том, чтобы добавить в код своего рода монитор позволил бы мне ввести последовательность нажатия клавиш и затем сказать: «Хорошо, я вижу, что вы хотите завершить sh, я просто завершу текущую оценку l oop и выйду».
По моему убеждению, я не может использовать прерывание клавиатуры, так как это немедленно завершит выполнение кода. Скорее всего, мне понадобится флаг, который изменится, если будет обнаружен ключ ....
Любая помощь будет признательна.
Таким образом, чтобы подвести итог моей псевдоИдеи было бы так:
for each generation:
if exit.flag != true:
for each individual:
evaluate individual
else:
write result
finish and exit
when key detected set exit.flag to true
Спасибо!