concurrent.futures: запускать несколько задач одновременно - PullRequest
0 голосов
/ 04 марта 2020

Ниже я пытаюсь использовать модуль фьючерсов Python для запуска 2 функций одновременно. Однако я получаю сообщение об ошибке future._condition.acquire() AttributeError: 'function' object has no attribute '_condition'

Правильно ли я использовал модуль фьючерсов?

from concurrent.futures import ThreadPoolExecutor, as_completed

def f1():
    print ("1")
    return ('a')

def f2():
    return 'b'

executors_list = []
with ThreadPoolExecutor(max_workers=2) as executor:
    executors_list.append(f1)
    executors_list.append(f2)

for future in as_completed(executors_list):
    r = (future.result())
    print("r: ".format(r))

1 Ответ

0 голосов
/ 04 марта 2020

Нужно использовать executor.submit(f1)

from concurrent.futures import ThreadPoolExecutor, as_completed

def f1():
    return ('a')

def f2():
    return 'b'

executors_list = []
with ThreadPoolExecutor(max_workers=2) as executor:
    to_do = [executor.submit(f1),
             executor.submit(f2)]

    for future in as_completed(to_do):
        print("future: {}, result {} ".format(future, future.result()))
...