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

630
Visualizações
¿Cómo descargo (recargo) un módulo de Python?

Tengo un servidor Python de ejecución prolongada y me gustaría poder actualizar un servicio sin reiniciar el servidor. ¿Cuál es la mejor manera de hacer esto?

if foo.py has changed:
    unimport foo  <-- How do I do this?
    import foo
    myfoo = foo.Foo()
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede recargar un módulo cuando ya ha sido importado usando importlib.reload():

from importlib import reload  # Python 3.4+
import foo

while True:
    # Do some things.
    if is_changed(foo):
        foo = reload(foo)

En Python 2, reloadera un incorporado. En Python 3, se movió al impmódulo. En 3.4, impquedó en desuso en favor de importlib. Cuando apunte a 3 o posterior, haga referencia al módulo apropiado al llamar reloado impórtelo.

Creo que esto es lo que quieres. Los servidores web como el servidor de desarrollo de Django usan esto para que pueda ver los efectos de los cambios en su código sin reiniciar el proceso del servidor.

Para citar de los documentos:

  • El código del módulo de Python se vuelve a compilar y el código de nivel de módulo se vuelve a ejecutar, definiendo un nuevo conjunto de objetos que están vinculados a los nombres en el diccionario del módulo mediante la reutilización del cargador que cargó originalmente el módulo. La initfunción de los módulos de extensión no se llama por segunda vez.

  • Al igual que con todos los demás objetos en Python, los objetos antiguos solo se recuperan después de que sus recuentos de referencia caen a cero.

  • Los nombres en el espacio de nombres del módulo se actualizan para apuntar a cualquier objeto nuevo o modificado.

  • Otras referencias a los objetos antiguos (como los nombres externos al módulo) no se vuelven a vincular para hacer referencia a los objetos nuevos y deben actualizarse en cada espacio de nombres donde aparecen, si así se desea.

Como anotó en su pregunta, tendrá que reconstruir Fooobjetos si la Fooclase reside en el foomódulo.

over 4 years ago · Santiago Trujillo Relatório
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