【问题标题】:Twisted (Python) - what is the difference between cooperate and coiterate?Twisted (Python) - 合作和合作有什么区别?
【发布时间】:2012-04-10 02:10:50
【问题描述】:

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

我的直觉是,cooperative() 任务在 CooperativeTask 对象中完成,coiterate() 在 Deferred 对象中完成。如果有人可以总结合作和合作之间的行为差​​异,我将不胜感激。

【问题讨论】:

    标签: python twisted


    【解决方案1】:

    几乎,但不完全是。 cooperate 是比 coiterate 稍新的 API。 cooperate 通常只是 coiterate 的稍微好一点的版本,你几乎总是想使用它。返回CooperativeTask 有两个好处。首先,您可以在没有stopping 的情况下pauseresume 任务,其次,您可以生成multiple Deferreds,在任务完成时通知您而不会相互干扰,而不仅仅是一个。

    coiteratecooperate 都在后台生成 CooperativeTask,并且都使用非常短的间隔 LoopingCall 作为默认调度程序。如果您想使用不同的任务调度程序,您可以随时实例化自己的Cooperator

    (顺便说一句,如果coiterate返回Deferred这一事实还没有文档错误,请提交一个。)

    【讨论】:

    • 正是我一直在寻找的答案,然后是一些。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2010-11-08
    • 2010-11-05
    • 2011-02-11
    • 2016-08-12
    相关资源
    最近更新 更多