Как я могу завершить поток, используя метод исключения Throw - Python - PullRequest
1 голос
/ 11 апреля 2019

Я нашел в сети некоторый код, который останавливает поток через исключение после некоторого периода ожидания.

def raise_exception(self):
  thread_id = self.get_id()
  res = ctypes.pythonapi.PyThreadState_SetAsyncExc(thread_id, 
          ctypes.py_object(SystemExit)) 
  if res > 1: 
    ctypes.pythonapi.PyThreadState_SetAsyncExc(thread_id, 0) 
    print('Exception raise failure')

Исключение вызывается через некоторое время:

t1 = thread_with_exception('Thread 1') 
t1.start() 
time.sleep(1/1000) 
t1.raise_exception() 
t1.join()

Я хотел бы вызвать исключение, которое бы указывало, сколько раз происходит процесс. Такие как:

t1 = thread_with_exception('Thread 1') 
t1.start() 
if t1.count >= 3: 
    t1.raise_exception() 
    t1.join() 

Это, однако, не вызывает исключение, когда t1.count> = 3.

Может ли исключение вызываться таким образом?

1 Ответ

0 голосов
/ 19 апреля 2019

Вместо того, чтобы вызывать в классе_подключение вне класса, вызов этого метода из потока будет работать.Пример.

def run(self):
    if count>3:
         self.raise_exception()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...