У меня есть сокет, прослушивающий поток json, но, если возможно, какой-нибудь потоковый производитель.Я помещаю элементы в очередь Queue.queue для потребления:
self.MAX_QUEUE_SIZE = 0
self.POOL_SIZE = 10
self.Queue_ = Queue.Queue(maxsize=self.MAX_QUEUE_SIZE)
def monitor_resp(self,q):
while True:
resp = q.get()
self.parse_resp(resp)
q.task_done()
def start_consumer_threads(self):
for i in range(self.POOL_SIZE):
t = threading.Thread(name = 'Parser Thread-' + str(i),
target=self.monitor_resp, args=(self.Queue_, ))
t.daemon = True
t.start()
def open_thread(self,req):
self.send(req)
|
|
(socket recv code)
|
------------> self.Queue_.put(resp)
Мой вопрос заключается в том, какие соображения производительности следует учитывать при установке переменных MAX_QUEUE_SIZE и POOL_SIZE?
* 1007Т.е. какой вес каждый работник постоянно спрашивает q.get () для системы?
Если очень мало, чтобы большое количество работников было лучше, чтобы не допустить смешения данных из канала сокетов?
Когда я использую put_nowait (), я редко получаю исключение Queue.Full - это правда?возможно, в случае проб и ошибок - использование блока и регистрация этих исключений?