Подсказки типов в сигнатуре метода в typhed показывают, что позиционные аргументы должны быть предоставлены как итерируемые:
def apply_async(self,
func: (...) -> _T,
args: Iterable = ...,
kwds: Mapping[str, Any] = ...,
callback: Optional[(_T) -> None] = ...,
error_callback: Optional[(BaseException) -> None] = ...)
Ваш звонок на apply_async
должен выглядеть следующим образом:
pool.apply_async(testMethod, args=(t, 'foo', 'bar'))
Или, используя сопоставление аргументов ключевого слова:
pool.apply_async(testMethod, kwds={'arg1': t, 'arg2': 'foo', 'arg3': 'bar'})
В качестве отступления: ваш пример кода не использует пул потоков; multiprocessing.Pool
- это класс, представляющий пул процесса , т. Е. Он создает отдельные процессы для работы в качестве рабочих.
Если вы хотите использовать пул потоков, перейдите к:
from multiprocessing.pool import ThreadPool
pool = ThreadPool()
Интерфейс похож на интерфейс пула процессов.