Python Threading Interrupt Sleep

Есть ли в Python способ прерывать поток, когда он спит? (Как мы можем сделать в Java)

Я ищу что-то подобное.

  import threading
  from time import sleep

  def f():
      print('started')
  try:
      sleep(100)
      print('finished')
  except SleepInterruptedException:
      print('interrupted')

t = threading.Thread(target=f)
t.start()

if input() == 'stop':
    t.interrupt()

Поток спит в течение 100 секунд, и если я набираю «стоп», он прерывается

 ƘɌỈSƬƠƑ08 авг. 2016 г., 13:56
Вы могли бы реализоватьСобытие и использоватьEvent.wait(100)
 Asish M.08 авг. 2016 г., 13:57
Цикл 100time.sleep(1) и проверьте на любые исключения

Ответы на вопрос(2)

Правильный подход заключается в использованииthreading.Event, Например:

import threading

e = threading.Event()
e.wait(timeout=100)   # instead of time.sleep(100)

В другой теме вам необходимо иметь доступ кe, Вы можете прервать сон, выполнив:

e.set()

Это немедленно прервет сон. Вы можете проверить возвращаемое значениеe.wait чтобы определить, истек ли он или прерван. Для получения дополнительной информации обратитесь к документации:https://docs.python.org/3/library/threading.html#event-objects .

Решение Вопроса

https://docs.python.org/2/library/threading.html#condition-objects

Вместо sleep () вы используете wait (Тайм-аут). Для «прерывания» вы вызываете notify ().

Ваш ответ на вопрос