서버 업그레이드를 위한 Python 모듈 다시 로드
장기 실행 Python 서버를 유지하려면 전체 서버를 다시 시작하지 않고도 업그레이드가 필요할 수 있습니다. 이에 대한 한 가지 접근 방식은 특정 모듈을 언로드하고 다시 로드하는 것입니다.
질문: Python 모듈을 언로드하고 다시 로드하는 방법은 무엇입니까?
이전에 가져온 모듈을 언로드하고 해당 모듈을 로드하려면 서버를 다시 시작하지 않고 버전을 업데이트했습니다.
답변: importlib.reload()를 사용하세요. 함수
Python 3.4의 경우 importlib.reload() 함수를 사용하세요.
from importlib import reload import foo while True: # Perform actions if is_changed(foo): foo = reload(foo)
Python 2의 경우 imp 모듈의 reload 함수를 사용하세요.
참조 리바인딩
모듈을 다시 로드한 후, 해당 개체는 다시 생성되지만 외부 참조는 업데이트해야 합니다. 제공된 예에서 Foo 객체가 foo 모듈에 있는 경우 이를 다시 생성해야 합니다.
이 기술은 일반적으로 Django 개발 서버의 핫 리로드에 사용되며, 이를 통해 다시 시작하지 않고도 코드 변경 사항을 반영할 수 있습니다. 서버.
Python 모듈 다시 로드 세부 정보
Importlib.reload()는 모듈의 코드를 다시 컴파일하고, 모듈 수준 코드를 다시 실행하고, 모듈의 사전을 새 개체로 업데이트합니다. 참조 횟수가 0으로 떨어지면 오래된 객체는 가비지 수집됩니다.
원하는 경우 모듈 외부의 오래된 객체에 대한 바인딩되지 않은 참조는 수동으로 업데이트해야 합니다.
위 내용은 서버를 다시 시작하지 않고 Python 모듈을 다시 로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!