使用While语句使用While循环两次

时间:2018-03-06 13:01:17

标签: python python-3.x

我找不到与我的问题类似的东西。

我目前正在开发一个Thread threader函数。

我有两个队列,一个r_queue用于常规,p_queue用于优先级。

def _threader(self):
    # Thread Handler
    while self.active:
        while self.p_queue.empty() and self.r_queue.qsize() > 0:
            # Regular Queue
            queue_dict = self.r_queue.get()
            self._complete_task(queue_dict, prioritized=False)

        (else?) while self.p_queue.qsize() > 0:
            # Prioritized Queue
            queue_dict = self.p_queue.get()
            self._complete_task(queue_dict, prioritized=True)

我如何正确使用(else?)?

编辑:穿线器背后的想法是,它从队列接收数据并完成功能。第一个问题是它优先考虑优先级队列,并且仅在具有大小的情况下才调用。 (当它的None存在时,无法得到一些东西)我的问题是,我需要为优先级队列添加一个while循环(else?) while self.p_queue.qsize() > 0:,但我不能直接使用其他。如果我愿意,如果队列大小为None,它将不断选择“Nothing”。像elif while self.p_queue.qsize() > 0这样的东西,但不存在。

1 个答案:

答案 0 :(得分:1)

您不需要内部while循环,因为您可以使用:

def _threader(self):
    # Thread Handler
    while self.active:
        if self.p_queue.qsize() > 0:
            # Prioritized Queue
            queue_dict = self.p_queue.get()
            self._complete_task(queue_dict, prioritized=True)
        elif self.r_queue.qsize() > 0:
            # Regular Queue
            queue_dict = self.r_queue.get()
            self._complete_task(queue_dict, prioritized=False)