Frage

Ich habe zwei ganze Zahlen in meinem Programm; Nennen wir sie ""a" und "b". Ich möchte sie zusammen hinzufügen und dadurch eine weitere Ganzzahl bekommen. Dies sind normale Python int Objekte. Ich frage mich; Wie füge ich sie zusammen mit Twisted hinzu? Gibt es eine besondere performAsynchronousAddition Irgendwo funktionieren? Brauche ich eine Deferred? Was ist mit dem Reaktor? Ist der Reaktor beteiligt?

War es hilfreich?

Lösung

OK, um klar zu sein.

Verdreht macht nichts darüber CPU -gebundene Aufgaben und aus gutem Grund. Es gibt keine Möglichkeit, einen berechnungsgebundenen Job schneller zu machen, indem sie Unteraufgaben neu ordnen. Das einzige, was Sie möglicherweise tun könnten, ist, mehr Rechenressourcen hinzuzufügen. Und selbst das würde in Python wegen einer Subtilität seiner Umsetzung nicht funktionieren.

Twisted bietet spezielle Semantik- und Event -Loop -Handhabung für den Fall, dass das Programm werden würde. "gesteckt"Warten auf etwas draußen, wenn es die Kontrolle hat; meistens ein Prozess, der auf einer anderen Maschine ausgeführt wird und mit Ihrem verdrehten Prozess über eine Netzwerkverbindung kommuniziert. Da Sie es tun würden warten Auf jeden Fall gibt Twisted Ihnen einen Mechanismus, um in der Zwischenzeit mehr Dinge zu erledigen. Das heißt, Twisted bietet Parallelität für E/A -gebundene Aufgaben

TL; DR: Twisted ist für Netzwerkcode. Alles andere ist nur normaler Python.

Andere Tipps

Wie wäre es damit:

c = a + b

Das sollte funktionieren, und es muss nicht asynchron gemacht werden (es ist ziemlich schnell).

Gute Frage, und verdrehte (oder Python) sollte eine Möglichkeit haben, mindestens "A + B" von mehreren Kernen (auf meinem 8 Core i7) zu laichen.

Leider verhindert der Python Gil dies, was bedeutet, dass Sie nicht nur auf die CPU -gebundene Aufgabe, sondern auch für einen Kern warten müssen, während der sieben andere Kern nichts tut.

HINWEIS: Vielleicht wäre ein besseres Beispiel "a () + b ()" oder sogar "Tatsache (SQRT (a () ** b ()) usw. Aber die wichtige Tatsache ist, dass der oben genannte Betrieb einen Kern sperrt und ein Kern sperrt und Der Gil verhindert Python so ziemlich, dass er während dieser Operation etwas anderes getan hat, was mehrere MS sein könnte ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top