Cómo generar futuro solo si hay trabajadores libres disponibles

Estoy intentando enviar información extraída de las líneas de un archivo grande a un proceso que se ejecuta en algún servidor.

Para acelerar esto, me gustaría hacer esto con algunos hilos en paralelo.

Usando el backport Python 2.7 deconcurrent.futures Intenté esto:

f = open("big_file")
with ThreadPoolExecutor(max_workers=4) as e:
    for line in f:
        e.submit(send_line_function, line)
f.close()

Sin embargo, esto es problemático, porque todos los futuros se envían instantáneamente, por lo que mi máquina se queda sin memoria, porque el archivo completo se carga en la memoria.

Mi pregunta es si hay una manera fácil de enviar un nuevo futuro solo cuando haya un trabajador libre disponible.

Respuestas a la pregunta(1)

Su respuesta a la pregunta