什么是 gevent.queue.Channel?
Posted
技术标签:
【中文标题】什么是 gevent.queue.Channel?【英文标题】:What is gevent.queue.Channel? 【发布时间】:2015-02-11 09:47:56 【问题描述】:在Gevent的what's new下,提到了gevent.queue
模块下的一个新类Channel
:
Queue(0) 现在等同于未绑定队列并引发 DeprecationError。如果需要通道,请使用 gevent.queue.Channel。
我查看了文档页面,但没有关于 Channel
是什么或做什么的文档。查看source,它似乎类似于Queue
,但它不是它的子类。 Channel
的目的或用途到底是什么?它是某种专门的队列吗?
【问题讨论】:
【参考方案1】:看看the code for the pre-1.0 version of Gevent 会告诉你Channel
是什么(虽然我知道这有点令人费解):
Queue(0)
是一个通道,即它的put
方法总是 阻塞,直到项目交付。 (这与标准不同Queue
,其中 0 表示无限大)。
现在,正如发行说明所示,这种行为在 Gevent 1.0 中发生了变化,Queue(0)
不再以这种方式工作:Channel()
可以。
您会发现,Channel.put
的实现比Queue.put
的实现要复杂得多。
请注意,“标准Queue
”指的是the standard library Queue。
【讨论】:
以上是关于什么是 gevent.queue.Channel?的主要内容,如果未能解决你的问题,请参考以下文章