Threading: AssertionError: аргумент group должен быть None на данный момент

Вопрос: Здесь реализована стоп-нить и попытка ее использования: import threading class StoppableThread(threading.Thread): """Thread class with a stop() method. The thread itself has to check regularly for the stopped() condition.""" def __init__(self, target, kwargs): super(StoppableThread, self).__init__(target, kwargs) self._stop_event = threading.Event() def stop(self): self._stop_event.set() def stopped(self): return self._stop_event.it_set() def func(s): print(s) t = StoppableThread(target = func, kwargs={"s":"Hi"})

Вопрос:

Здесь реализована стоп-нить и попытка ее использования:

import threading class StoppableThread(threading.Thread): «»»Thread class with a stop() method. The thread itself has to check regularly for the stopped() condition.»»» def __init__(self, target, kwargs): super(StoppableThread, self).__init__(target, kwargs) self._stop_event = threading.Event() def stop(self): self._stop_event.set() def stopped(self): return self._stop_event.it_set() def func(s): print(s) t = StoppableThread(target = func, kwargs={«s»:»Hi»}) t.start()

Этот код генерирует ошибку:

Traceback (most recent call last): File «test.py», line 19, in <module> t = StoppableThread(target = func) File «test.py», line 7, in __init__ super(StoppableThread, self).__init__(target) File «/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py», line 780, in __init__ assert group is None, «group argument must be None for now» AssertionError: group argument must be None for now

Я хотел бы знать, почему и как это исправить.

Лучший ответ:

первый аргумент для потока – это группа, поэтому вам нужно указать имя для цели

super(StoppableThread, self).__init__(target=target, kwargs)

есть документ

class threading.Thread(group = None, target = None, name = None, args =(), kwargs = {})

https://docs.python.org/2/library/threading.html#threading.Thread

Ответ №1

Попробуйте следующее:

import threading class StoppableThread(threading.Thread): «»»Thread class with a stop() method. The thread itself has to check regularly for the stopped() condition.»»» def __init__(self, *args, **kwargs): super(StoppableThread, self).__init__(*args, **kwargs) self._stop_event = Event()

*args – последовательность с каждым позиционным аргументом, а **kwargs – словарь с каждым аргументом key-wrod. Используя эту нотацию, вы передаете каждый аргумент, StoppableThread конструктор StoppableThread его родительскому StoppableThread. Имена варсов *args и **kwargs являются произвольными.

Оцените статью
Добавить комментарий