Pregunta

En Python, si quiero que mi servidor escale bien en cuanto a CPU, obviamente necesito generar múltiples procesos. Me preguntaba cuál es mejor (usando Twisted):

A) El proceso del administrador (el que mantiene las conexiones de socket reales) coloca los paquetes recibidos en una cola compartida (la del módulo de multiprocesamiento), y los procesos de trabajo extraen los paquetes de la cola, los procesan y envían resultados de vuelta al cliente.

B) El proceso del administrador (el que mantiene las conexiones de socket reales) inicia un subproceso diferido y luego llama a la función apply () en el grupo de procesos. Una vez que el resultado regresa del proceso de trabajo, el gerente devuelve el resultado al cliente.

En ambas implementaciones, los procesos de trabajo usan grupos de subprocesos para poder trabajar en más de un paquete a la vez (ya que habrá muchas consultas en la base de datos).

¿Fue útil?

Solución

Creo que B es problemático. El hilo solo se ejecutaría en una CPU, e incluso si ejecuta un proceso, el hilo todavía se está ejecutando. A puede ser mejor.

Es mejor intentar medir ambos en términos de tiempo y ver cuál es más rápido y cuál escala bien. Sin embargo, reiteraré que dudo mucho que B vaya a escalar bien.

Otros consejos

Creo que " A " es la respuesta que desea, pero no tiene que hacerlo usted mismo.

¿Ha considerado ampolla ?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top