Frage

In Python, wenn ich mein Server will maßstäblich gut CPU-weise, ich brauche offensichtlich mehrere Prozesse, um laichen. Ich habe mich gefragt, was besser ist (mit Verdreht):

A) Der Verwaltungsprozess (derjenige, der die tatsächlichen Socket-Verbindungen) hält puts Pakete in eine gemeinsame Warteschlange empfangen (die von dem Multiprocessing-Modul) und Arbeitsprozesse ziehen die Pakete aus der Warteschlange, verarbeiten sie und senden die Ergebnisse zurück an den Client.

B) Der Verwaltungsprozess (derjenige, der die eigentlichen Socket-Verbindungen) startet und einen latenten Faden hält ruft dann die apply () Funktion auf den Prozess-Pool. Sobald das Ergebnis zurück aus dem Arbeitsprozess, sendet der Manager das Ergebnis zurück an den Client.

In beiden Implementierungen verwenden Sie die Arbeitsprozesse Thread-Pools, so dass sie sofort auf mehr als ein Paket arbeiten können (da es eine Menge von Datenbankabfragen sein).

War es hilfreich?

Lösung

Ich denke, dass B problematisch ist. Der Thread würde nur auf einer CPU laufen, und auch wenn es einen Prozess läuft, wird der Faden noch läuft. A kann besser sein.

Am besten ist es, zu versuchen und sowohl in Bezug auf die Zeit zu messen und sehen, welche schneller ist und die man skaliert gut. Ich werde jedoch wiederholen, dass ich sehr bezweifle, dass B gut skaliert.

Andere Tipps

Ich denke, dass „A“ ist die Antwort, die Sie wollen, aber Sie haben nicht, es selbst zu tun.

Haben Sie darüber nachgedacht Ampulle ?

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