Welche Probleme (wenn überhaupt) würde es geben, Asynchronität mit Mehrfachverarbeitung zu kombinieren?

Wie fast jeder weiß, wenn er sich das Threading in Python ansieht, gibt es die GIL, die das Leben von Menschen, die tatsächlich parallel arbeiten wollen, miserabel macht - oder zumindest eine Chance gibt.

Ich bin gerade dabei, so etwas wie das Reactor-Pattern zu implementieren. Eigentlich möchte ich auf eingehende Socket-Verbindungen in einem Thread warten, und wenn jemand versucht, eine Verbindung herzustellen, akzeptiere ich diese Verbindung und leite sie zur Verarbeitung an einen anderen Thread weiter.

Ich bin (noch) nicht sicher, welcher Art von Last ich ausgesetzt sein könnte. Ich weiß, dass derzeit eine Obergrenze von 2 MB für eingehende Nachrichten festgelegt ist. Theoretisch könnten wir Tausende pro Sekunde erreichen (obwohl ich nicht weiß, ob wir praktisch so etwas gesehen haben). Die für die Bearbeitung einer Nachricht aufgewendete Zeit beträgt nichtfürchterlich wichtig, obwohl offensichtlich schneller besser wäre.

Ich habe mir das Reaktormuster angesehen und ein kleines Beispiel mit dem entwickeltmultiprocessing Bibliothek, die (zumindest im Test) gut zu funktionieren scheint. Aber jetzt / bald haben wir dieasyncio Bibliothek zur Verfügung, die die Ereignisschleife für mich behandeln würde.

Gibt es etwas, das mich beim Kombinieren beißen könnte?asyncio undmultiprocessing?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage