А то, что нет смысла в таком количестве потоков.
Вот утверждение:
pasaranax
рекомендуют устанавливать количество потоков равным количеству ядер + 1
Для питона оно бессмысленно. Ибо GIL режет реальную многопоточность на корню. Тут надо процессы использовать.
Но тут есть ещё ожидание ввода-вывода. Если представить, что скорость обработки запроса гууглом стремится к бесконечности, то узким местом является канал связи. ИМХО, максимальную производительность можно достичь, если максимально загрузить канал. Т.е. не создавать новых потоков, пока некуда будет впихнуть новый запрос. Не знаю, как правильнее объяснить.
Хорошим решением было бы создать пулл нитей и подобрать количество нитей в нём.
Лучшим вариантом был бы вариант динамического ведения статистики времени выполнения запроса и вычисления из этого количество активных нитей в пулле.
P.S. И никакого time.sleep! Оно-то зачем??? Надо же получить максимальную производительность, а не “заставить работать”.
Добавленно:Skyler
После запуска очереди потоков, первые задачи выполняются быстро, но вот последние несколько идут оооочень медленно.
Собственно, это похоже на ожидание отправки/получения пакетов через сеть.