我有一个套接字在侦听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变量时应考虑哪些性能方面的考虑?
即每个工作人员不断询问q.get()放在系统上的重量是多少?
如果数量很少的话,最好是确保套接字供稿没有数据混淆吗?
当我使用put_nowait()时,我很少遇到Queue.Full异常-可能是反复试验的情况-使用该块并记录了这些异常吗?