Я делаю программу на python, которая периодически (с интервалом в 1 секунду) собирает некоторые данные из ~ 700 файлов и запрашивает сервер с полученными данными.Для одного запроса время ответа обычно составляет 2-3 мсек, но в некоторых случаях это может занять до 200 мсек.Программа состоит из:
Один извлекающий поток: каждую 1 секунду перебирает более 700 файлов, получает данные, а затем отправляет полученные данные в общую очередь так называемого пула запросов.
Пул из N потоков: каждый поток выбирает данные из общей очереди и отправляет запрос на сервер.
Если N равно 4, программа показывает лучшееспектакль.Если я увеличу N до 8, тогда производительность значительно ухудшится.Я предполагаю, что это из-за GIL Python.
Большую часть времени программа работает хорошо, но если есть запрос, который занимает много времени (из-за позднего ответа от сервера), то на все последующие запросы сильно влияют.
Я действительно хочу воспользоваться многопоточностью, поэтому я смотрю на gevent
, но не уверен, может ли это помочь.
Мои вопросы:
Как выглядит мой текущий дизайн?Есть ли лучший дизайн для него?
Поможет ли gevent
в этой проблеме?