堆栈中的 get() 和 get_nowait() 有什么区别?

问题描述

我找不到堆栈的这两个函数间的区别。 get():- 返回元素。 get_Nowait() :- 也返回元素。 那么是什么让他们与众不同??

解决方法

区别在于一个块和另一个不块。来自docs

Queue.get(block=True,timeout=None)

从队列中移除并返回一个项目。如果可选 args 块为 true 且 timeout 为 None (默认值),则在必要时阻止,直到项目可用。如果 timeout 是一个正数,它最多阻塞 timeout 秒,如果在该时间内没有可用的项目,则引发 Empty 异常。否则(块为假),如果一个项目立即可用,则返回一个项目,否则引发 Empty 异常(在这种情况下忽略超时)。

Queue.get 如果 block 参数为 True 将阻塞,直到元素被推送到队列或超时(如果给定)。

Queue.get_nowait()

相当于 get(False)。

Queue.get_no_wait() 永远不会阻塞,但如果队列为空则返回 Queue.Empty

堆栈实现也是如此。