在Twisted中实现客户端协议,我当前的代码在收到的每个协议单元上做了很多工作,它不使用I / O,因此当前没有使用Deferred。 处理并不意味着密集,但它对可插拔接口开放。
是否存在执行此分区的阈值?
答案 0 :(得分:1)
您可能会考虑在将要调用插件的位置“推迟”,因为您无法预测他们是否会对数据库,远程进程,Web服务等进行任何I / O操作。
使用@inlineCallbacks
进行研究,只需使用Python的yield
语句,就可以简化您在处理Deferreds方面的生活。然后,您可以尝试以各种方式分解计算密集型工作,或许为其他协议处理程序提供运行和完成的机会,尤其是如果某些处理程序是计算密集型而其他处理程序不是。