python中队列的使用,在大多场景下,我们可以使用列表替代队列。但在一些特殊场景下,队列相比列表具有天然的优势。即队列数据消费掉自动减少。比如添加任务,任务执行完,我们一般不会再执行一次,而且,任务在执行的过程中,我们向队列中如果添加了新的任务标识进去,就不需要再次刷新队列,而列表在这方面显的有些不足。
比如在当前任务执行完的情况下,添加一个新的任务进去到列表中去,如果不对列表信息进行刷新,我们想要取到列表中的新数据会变的困难。
当然,这个和我们的循环写法也有关系,比如我们的循环次数,为了防止循环次数超限,我们一般会使用for i in range(len(temp_list)):这样的写法,这会导致循环次数会以最初的列表长度一致。如果我们是用的while循环到也不会受到这个影响。但是如果使用while循环,我们的循环停止判定条件就需要较多的设计。会显得更加呆一些。
还有一个就是queue包中如果添加了队列最大长度后,我们在使用过程中会需要注意对队列长度的判断,因为如果队列长度超出设定范围,程序会直接卡死,不继续执行,而且也不会报任务错误。这会导致问题的排查难度增加。
近期队列的使用,是在解决广度优先搜索问题。图结构类型的数据,在进行拓扑关联的时候,需要找到下一个节点,然后再利用下一个节点的值找到下下一个节点,以此类推,直到整个拓扑结构拼接起来。这样的话,我们可以把整个查找函数编写为入参只需要一个节点信息,然后结果返回整个匹配到的信息。然后就可以把所有要查找的节点放入到队列中去,不停的去消费队列中的数据即可将整个拓扑结果拼接起来。