Die Dokumentation hier Ссылка vorschlagen, dass der Unterschied ist, dass die Zusammenarbeit eine CooperativeTask zurückgibt, während Coiterate einen Deferred (belegt durch meine eigenen Tests, nicht in Dokumenten angegeben) zurückgibt. Ich habe das Wochenende damit verbracht, die Grundlagen von Twisted zu lernen, also verstehe ich, was ein Deferred ist, und ich war ein guter Junge, der meinen Blocking-Code zu Threads / Prozessen geschickt hat. Ich verstehe, dass coiterate so schnell geht, wie es Twisted zulässt, während LoopingCall versucht, mit dem ausgewählten Intervall zu feuern.
Mein Tipp ist, dass cooperate () -Aufgaben innerhalb von CooperativeTask-Objekten und coiterate () innerhalb von Deferred-Objekten ausgeführt werden. Wenn jemand die Unterschiede im Verhalten zwischen kooperieren und coitrate zusammenfassen kann, würde ich es schätzen.
Fast, aber nicht genau. cooperate
ist eine etwas neuere API als coiterate
. cooperate
ist im Allgemeinen nur eine etwas bessere Version von coiterate
und Sie wollen es immer benutzen. Die Rückgabe von CooperativeTask
bietet zwei Vorteile. Zuerst können Sie pausieren und wiederholen die Aufgabe ohne anhalten , und zweitens können Sie mehrere Deferreds , die Sie benachrichtigen, wenn die Aufgabe erledigt ist, ohne sich gegenseitig zu stören, anstatt nur die eine.
Sowohl coiterate
als auch cooperate
erzeugen eine CooperativeTask
unter der Haube, und beide benutzen ein sehr kurzes Intervall LoopingCall
als ihren Standard-Scheduler. Wenn Sie einen anderen Taskplaner verwenden möchten, können Sie jederzeit Ihre eigenen Cooperator
.
(Wenn übrigens noch kein Fehler in der Dokumentation vorhanden ist, weil coiterate
eine Deferred
zurückgibt, dann bitte eine.)