Вопрос по multithreading, python, thread-sleep – Python Threading Interrupt Sleep

2

Есть ли в 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 секунд, и если я набираю «стоп», он прерывается

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

Ваш Ответ

2   ответа
5

Правильный подход заключается в использовании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 .

2

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

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

Похожие вопросы