2012-04-10 9 views
8

ここでのドキュメント の違いは、cooperateがCooperativeTaskを返すのに対し、coiterateはDeferredを返します(ドキュメントで指定されていない自分のテストで証明されています)。私は週末にTwistedの基本を学んだので、Deferredが何であるかを理解しています。スレッド/プロセスにブロックコードを送ってくれる良い少年でした。私はLoopingCallが選択された間隔で発射しようとしているのに対し、CoistiterateはTwistedと同じくらい速く進むことを理解しています。ツイスト(Python) - 協調と共通の違いは何ですか?

私の勘違いは、CooperativeTaskオブジェクト内でcooperate()タスクが実行され、Deferredオブジェクト内でcoiterate()が実行されることです。誰かが協力と公平の間の行動の違いを要約できるなら、私はそれを感謝します。

答えて

9

ほぼ正確ですが、正確ではありません。 cooperateは、coiterateより若干新しいAPIです。 cooperateは一般的にちょうどちょうどcoiterateのほんの少し良いバージョンで、あなたはいつもそれを使いたいと思っています。 CooperativeTaskを返すと、2つの利点が得られます。まず、pauseresumeのタスクをstoppingにすることができます。次に、タスクが完了したときに通知するmultiple Deferredsを生成して、互いに干渉することなく通知することができます。

両方coiteratecooperateは、ボンネットの下CooperativeTaskを生成し、両方が彼らのデフォルトのスケジューラとして非常に短い間隔LoopingCallを使用しています。別のタスクスケジューラを使用する場合は、いつでも独自のCooperatorをインスタンス化することができます。

(ないドキュメントのバグがcoiterateDeferredを返すという事実をまだありません場合ちなみに、1を提出してください。)

+0

私が探していた後、いくつかされた正確な答え。ありがとう! – pagga

関連する問題