ホームページ >バックエンド開発 >Python チュートリアル >サーバーを再起動せずに Python モジュールをリロードするにはどうすればよいですか?
サーバーのアップグレードのための Python モジュールの再ロード
長時間実行される Python サーバーを維持するには、サーバー全体を再起動せずにアップグレードが必要になる場合があります。このための 1 つの方法は、特定のモジュールをアンロードして再ロードすることです。
質問: 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() は、モジュールのコードを再コンパイルし、モジュールレベルのコードを再実行し、新しいオブジェクトでモジュールの辞書を更新します。古いオブジェクトは、参照カウントがゼロになるとガベージ コレクションされます。
モジュール外の古いオブジェクトへのバインドされていない参照は、必要に応じて手動で更新する必要があります。
以上がサーバーを再起動せずに Python モジュールをリロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。