Como gerar futuro apenas se o trabalhador livre estiver disponível

Eu estou tentando enviar informações extraídas de linhas de um arquivo grande para um processo em execução em algum servidor.

Para acelerar isso, gostaria de fazer isso com alguns threads em paralelo.

Usando o backport do Python 2.7concorrente.futures Eu tentei isso:

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

No entanto, isso é problemático, porque todos os futuros são enviados instantaneamente, para que minha máquina fique sem memória, porque o arquivo completo é carregado na memória.

A minha pergunta é, se existe uma maneira fácil de enviar apenas um novo futuro quando um trabalhador livre está disponível.

questionAnswers(1)

yourAnswerToTheQuestion