Завершить цикл с пользовательским вводом в Python - PullRequest
0 голосов
/ 08 марта 2019

У меня есть эта функция обновления:

def update(self, interval=60):
    while True:
        # Do stuff

        time.sleep(interval)

Я хотел бы знать возможные способы, как только после вызова функции прервать цикл с помощью пользовательского ввода, оставив скрипт запущенным.

Все, что я нашел, было ответом от 5+ лет назад, в основном в зависимости от платформы. Есть ли новый / надежный способ добиться этого?Я бы предпочел избежать потоков, если это возможно.Используя 3.7

1 Ответ

1 голос
/ 08 марта 2019

Вы можете создать обработчик прерываний с сигналом . Это, однако, все еще зависит от системного потока для мониторинга; Я не думаю, что это дорого, так как поток уже создан.

По сути, вам все еще нужен своего рода глобальный флаг, который управляет циклом. Когда происходит триггер прерывания (пользовательский ввод и т. Д.), Прерывание меняет значение флага, и цикл завершается, что позволяет выполнять другую обработку.

...