Twisted (Python) - was ist der Unterschied zwischen kooperieren und coitieren?

8

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.

    
pagga 10.04.2012, 02:10
quelle

1 Antwort

9

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.)

    
Glyph 10.04.2012, 05:38
quelle

Tags und Links