什么是 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?的主要内容,如果未能解决你的问题,请参考以下文章

什么是PP,PE.什么是均聚..什么是共聚..什么是嵌段..什么是无规,什么是注塑。什么是吹膜..什

时间是什么?时间同步是什么?GPS北斗卫星授时又是什么?

什么是拉电流,什么是灌电流?什么是吸收电流 ?

在java中,OOA是什么?OOD是什么?OOP是什么?

什么是DIV,全称是什么?

什么是抢占/什么是可抢占内核?到底有什么好处呢?