【发布时间】:2016-01-14 08:40:09
【问题描述】:
我正在使用带有烧瓶和 pymongo 的 gevent。我有一个 API 端点,我需要循环来自 pymongo 的大量结果以进行一些 CPU 计算(速度平均值、地理坐标之间的距离......)。
我想知道 gevent 是否提供了一些功能来处理这种长阻塞操作。看来我可以在循环中使用gevent.sleep 来触发greenlets 之间的上下文切换,但它似乎不是很干净。
【问题讨论】:
我正在使用带有烧瓶和 pymongo 的 gevent。我有一个 API 端点,我需要循环来自 pymongo 的大量结果以进行一些 CPU 计算(速度平均值、地理坐标之间的距离......)。
我想知道 gevent 是否提供了一些功能来处理这种长阻塞操作。看来我可以在循环中使用gevent.sleep 来触发greenlets 之间的上下文切换,但它似乎不是很干净。
【问题讨论】:
使用gevent.sleep(0) 让步给集线器(您的意思是上下文切换)实际上是完全合法的,也是可行的方法。这是干净的,在文档gevent doc 中提到的方式。
【讨论】: