У меня есть очередь, которая может содержать до 4 объектов в очереди. Эти объекты являются потоками, выполняющими запросы веб-службы. Часть потока в порядке.
Я следовал многим учебным пособиям, в которых рассказывается о потоках потребителя и производителя, используемых для заполнения и исключения объекта очереди.
Мой вопрос о потребительской части. Во всех этих уроках и в отношении документации по питону единственный способ найти объекты из очереди - это:
while len(requltArray) < amountOfThreads:
thread = q.get(True)
thread.join()
Представьте, что q.get (True) накапливает поток с неверным запросом веб-службы. И представьте, что этот поток должен дождаться истечения времени ожидания urllib. Мой потребитель будет заблокирован на несколько секунд. Поскольку моя очередь ограничена четырьмя потоками и, может быть, еще три других закончились, я теряю время, пока потребитель не сможет продолжить сборы (и производитель сможет заполнить очередь).
Есть ли какой-либо способ или хорошо известный шаблон проектирования, чтобы избежать этой пустой траты времени?
Спасибо за вашу помощь