Эффективный способ тайм-аута ожидания изменения состояния (изменение переменной)?

#python #performance #timeout

#python #Производительность #тайм-аут

Вопрос:

Я уверен, что это довольно распространенное явление, поэтому мне любопытно, каковы принятые / эффективные способы сделать это в Python.

Проще говоря, я просто занят — ожидаю обновления переменной. В то же время мне нужна схема тайм-аута, но я чувствую, что должен быть лучший способ сделать это.

В настоящее время я делаю что-то вроде этого:

 wait_start = time.time()
while state != NEW_STATE:
    if time.time() - wait_start > timeout:
        print "Timed out!"
        # Do something

# Continuing on...
  

Я, очевидно, просто не могу спать, потому что мне нужно знать, когда состояние изменилось.

Итак, каков эффективный метод реализации тайм-аута для изменения состояния (переменной)?

Комментарии:

1. ой. когда state != NEW_STATE, вы будете потреблять циклы процессора, проверяя его

2. точно, я думал о сигналах, но я просто подумал, что для такого рода вещей существует принятая лучшая практика

Ответ №1:

Для такого типа вещей часто используютсяпеременные условия и события. И то, и другое требует сотрудничества со стороны, которая изменяет переменную.