与else语句一起使用While循环两次

2024-09-26 17:43:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我找不到与我的问题类似的东西。你知道吗

我目前正在开发一个线程线程器函数。你知道吗

我有两个队列,一个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?)就在这里?你知道吗

Edit:threader背后的思想是,它从队列接收数据并完成函数。第一个while是它对优先级队列进行优先级排序,并且只在它有一个大小的情况下调用。(当它不存在时不能得到一些东西)我的问题是,我需要为优先级队列添加while循环(else?) while self.p_queue.qsize() > 0:,但是我不能直接使用其他循环。如果我愿意,如果队列大小不存在,它会不断地选择“Nothing”。类似于elif while self.p_queue.qsize() > 0的东西,但这并不存在。你知道吗


Tags: 函数selftaskget队列queue线程else
1条回答
网友
1楼 · 发布于 2024-09-26 17:43:46

您不需要内部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)

相关问题 更多 >

    热门问题