Я пытаюсь перебрать большой список строк (примерно 80 000), сгенерировать HTTP-запрос и обработать ответы, пока не получу правильный. Я передаю список и функцию, которая выполняет запрос функции ThreadPoolExecutor.map()
, а затем просматриваю результаты по мере их поступления.
После получения правильного ответа от HTTP-сервера я хочу отменить все оставшиеся фьючерсы и закройте скрипт. Я бы предпочел, для простоты программирования, не отслеживать каждое будущее самому.
Я пробовал использовать shutdown()
, но независимо от того, укажу я или нет ждать, сценарий все равно не закончится, пока все фьючерсы в очереди заполнены. В результате, если строка 2000 моего списка является правильным значением, мне все равно придется ждать завершения следующих 78000 фьючерсов, что может занять значительное время.
Есть ли способ сообщить ThreadPoolExecutor, что остальные задачи не нужны и их даже не нужно запускать?