【发布时间】:2021-08-29 11:15:39
【问题描述】:
我无法找到这两个堆栈函数之间的区别。 get():- 返回元素。 get_nowait() :- 也返回元素。 那么它们有什么不同呢??
【问题讨论】:
标签: python-3.x stack queue mean-stack dsa
我无法找到这两个堆栈函数之间的区别。 get():- 返回元素。 get_nowait() :- 也返回元素。 那么它们有什么不同呢??
【问题讨论】:
标签: python-3.x stack queue mean-stack dsa
不同之处在于一个阻止,另一个不阻止。来自docs:
Queue.get(block=True, timeout=None)
从队列中删除并返回一个项目。如果可选 args 块为真且超时为无(默认值),则在必要时阻止,直到项目可用。如果 timeout 是一个正数,它最多会阻塞 timeout 秒,如果在那段时间内没有可用的项目,则会引发 Empty 异常。否则(block 为 false),如果一个项目立即可用,则返回一个项目,否则引发 Empty 异常(在这种情况下忽略超时)。
如果block 参数为True,Queue.get 将阻塞,直到将元素推入队列或超过给定的超时时间。
Queue.get_nowait()
等价于get(False)。
Queue.get_no_wait() 永远不会阻塞,但如果队列为空,则会返回Queue.Empty。
堆栈实现也是如此。
【讨论】: