Обратный вызов в вашем примере не вызывается, потому что задачи не выполняются.error_callback
будет вызываться с TypeError
для каждой из задач: foo_pool() takes 2 positional arguments but 3 were given
.
Вы должны либо сделать foo_pool
обычным методом, добавив self
в качестве первого параметра..
def foo_pool(self, index, number):
... или путем украшения его @staticmethod
:
@staticmethod
def foo_pool(index, number):
Исправление этого приведет к сбою log_result
, потому что вы вызываете list.append
с двумя аргументамив то время как для этого требуется только один.
Либо оберните self
и result
в структуру данных, например, кортеж ...
self.result_list.append((self, result))
... или пропустите добавление self
все вместе.В конце концов, это всегда будет ваш MultiThread
экземпляр:
self.result_list.append(result)
Кстати, имя MultiThread
вводит в заблуждение.Ваш класс оборачивает пул процессов, а не пул потоков.