Не работает многопоточность ThreadPoolExecutor Python

def method(args, num):
    ...

# Массив чисел от 50 до 100
nums = [x for x in range(50, 100)]
# Создаю массивы с агрументами и каждым числом
map_args = [(args, a) for a in nums]
with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as exe:
    exe.map(method, map_args)

Почему-то не работает, сразу же завершается работа с кодом 0. Не могу понять почему?
Может как-то иначе аргументы в метод передавать? exe.map(method, map_args)


Ответы (2 шт):

Автор решения: CrazyElf

Вам нужно ещё проитерироваться по результатам маппинга:

result = exe.map(method, map_args)
for res in result:
   print(res)

С передачей аргументов у вас, кажется, тоже проблемы, но главное то, что вы не потребляете результаты вызова.

→ Ссылка
Автор решения: whatgenius

Ошибка в том, что метод принимает 2 аргумента args и num, а я передаю только 1 - map_args. Как передавать 2 аргумента я не знаю, но можно все еще передавать map_args, заменив method(args, num) на method(data), и распаковывать data - args, num = data.

def method(data):
    args, num = data
    ...
→ Ссылка