Python队列性能注意事项

时间:2019-04-02 11:10:56

标签: python multithreading python-2.7 queue

我有一个套接字在侦听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异常-可能是反复试验的情况-使用该块并记录了这些异常吗?

0 个答案:

没有答案