Pasar múltiples parámetros a concurrent.futures.Executor.map

Losconcurrent.futures.Executor.map toma un número variable de iterables a partir del cual se llama la función dada. @ ¿Cómo debo llamarlo si tengo un generador que produce tuplas que normalmente se desempaquetan en su lugar?

Lo siguiente no funciona porque cada una de las tuplas generadas se da como un argumento diferente para mapear:

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

Sin el generador, los argumentos deseados para mapear podrían verse así:

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta