Domanda

In Python, se voglio che il mio server si ridimensioni bene in termini di CPU, devo ovviamente generare più processi. Mi chiedevo quale fosse meglio (usando Twisted):

A) Il processo di gestione (quello che detiene le connessioni socket effettive) inserisce i pacchetti ricevuti in una coda condivisa (quella dal modulo multiprocessore), ei processi di lavoro estraggono i pacchetti dalla coda, li elaborano e inviano il risultati al cliente.

B) Il processo manager (colui che detiene le connessioni socket effettive) avvia un thread differito e quindi chiama la funzione apply () sul pool di processi. Una volta che il risultato ritorna dal processo di lavoro, il gestore invia il risultato al client.

In entrambe le implementazioni, i processi di lavoro utilizzano pool di thread in modo che possano lavorare su più di un pacchetto alla volta (poiché ci saranno molte query sul database).

È stato utile?

Soluzione

Penso che B sia problematico. Il thread verrebbe eseguito solo su una CPU e anche se esegue un processo, il thread è ancora in esecuzione. A potrebbe essere migliore.

È meglio provare a misurare entrambi in termini di tempo e vedere quale è più veloce e quale si adatta bene. Tuttavia, ribadirò che dubito fortemente che B si ridimensionerà bene.

Altri suggerimenti

Penso che " A " è la risposta che vuoi, ma non devi farlo da solo.

Hai considerato ampolla ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top