Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
¿Cómo es que multiprocessing.managers.BaseManager es tan lento en Linux?

Estoy tratando de diagnosticar un problema de rendimiento con el servidor creado por multiprocessing.managers.BaseManager . El problema se reduce a esto:

server.py :

 import multiprocessing import multiprocessing.managers auth_key = b'12345678901234567890' port = 32001 shared_values = {} def _shared_values(): global shared_values return shared_values class SharedStateManager(multiprocessing.managers.BaseManager): pass SharedStateManager.register('SharedValues', callable=_shared_values) multiprocessing.current_process().authkey = auth_key server = SharedStateManager(address=('', port), authkey=auth_key) server.get_server().serve_forever()

client.py :

 import time import multiprocessing import multiprocessing.managers auth_key = b'12345678901234567890' port = 32001 class SharedStateManager(multiprocessing.managers.BaseManager): pass SharedStateManager.register('SharedValues') multiprocessing.current_process().authkey = auth_key ssm = SharedStateManager(address=('', port), authkey=auth_key) cl1 = time.time_ns() ssm.connect() cl2 = time.time_ns() shared_values = ssm.SharedValues() cl3 = time.time_ns() print('2-1: {} ms'.format((cl2 - cl1) / (10 ** 6))) print('3-2: {} ms'.format((cl3 - cl2) / (10 ** 6)))

Cuando ejecuto el código del cliente en una instancia de Debian buster que se ejecuta en Intel 8th-gen 2.3GHz i5 con 4 núcleos, obtengo:

 2-1: 42.124515 ms 3-2: 132.311978 ms

Que es muy lento. La versión de Python es 3.7.3, aunque probé una versión diferente con contenedores docker y obtuve resultados similares.

Pero si ejecuto el mismo código en una Macbook (macos 11.6) que tiene una CPU similar, obtengo:

 2-1: 1.950359 ms 3-2: 3.264376 ms

¿Cuál podría ser la causa de una diferencia de tiempo de respuesta tan dramática?

Editar: la máquina de destino no está rota ni nada. Está ejecutando un par de máquinas virtuales QEMU más algunos contenedores docker. Hasta ahora, la latencia de la red no ocurrió, por ejemplo, en un servidor HTTP basado en Sanic u otros servidores de socket en contenedores. Copiar un archivo a través de un recurso compartido de red maximizará la LAN a aproximadamente 100 MB/s. Así que le está pasando al servidor de multiprocesamiento de Python en particular.

Editar: también encontré esta pregunta que exhibió el mismo comportamiento con respecto a un programa de multiprocesamiento de Python que se ejecuta mucho más rápido en Mac que en Linux.

Edito: ¡Resuelto! Pensé que estaba ejecutando Debian bullseye, pero resultó que estaba ejecutando buster. Después de agotar todas las demás opciones, probé la actualización de versión. Y la latencia desapareció después de la actualización.

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda