这里的文档 http://twistedmatrix.com/documents/current/api/twisted.internet.task.html#cooperate 表明不同之处在于合作返回一个 CooperativeTask 而 coiterate 返回一个 Deferred (由我自己的测试证明,未指定在文档中)。我已经在周末投入了学习 Twisted 的基础知识,所以我了解了什么是 Deferred,并且我一直是一个将我的阻塞代码发送到线程/进程的好孩子。我了解 coiterate 的运行速度与 Twisted 允许的一样快,而 LoopingCall 尝试以选定的时间间隔触发。
我的直觉是,cooperative() 任务在 CooperativeTask 对象中完成,而 coiterate() 在 Deferred 对象中完成。如果有人可以总结合作和合作之间的行为差异,我将不胜感激。