Передать несколько параметров в concurrent.futures.Executor.map?

concurrent.futures.Executor.map принимает переменное количество итераций, из которых вызывается данная функция. Как мне назвать это, если у меня есть генератор, который производит кортежи, которые обычно распаковываются на месте?

Следующее не работает, потому что каждый из сгенерированных кортежей передается в качестве отдельного аргумента для map:

args = ((a, b) for (a, b) in c)
for result in executor.map(f, *args):
    pass

Без генератора желаемые аргументы для сопоставления могли бы выглядеть следующим образом:

executor.map(
    f,
    (i[0] for i in args),
    (i[1] for i in args),
    ...,
    (i[N] for i in args),
)

38
задан Leniel Maccaferri 8 April 2018 в 17:37
поделиться

1 ответ

Я видел столько ответов здесь, но ни один из них не является столь же прямым как использующий лямбда-выражения:

нечто (x, y): передача

хочет звонить выше метода 10 раз с тем же значением т.е. xVal и yVal? с concurrent.futures. ThreadPoolExecutor () как исполнитель:

for _ in executor.map( lambda _: foo(xVal, yVal), range(0, 10)):
    pass
0
ответ дан 27 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: