ホームページ >バックエンド開発 >Python チュートリアル >サーバーを再起動せずに Python モジュールをリロードするにはどうすればよいですか?

サーバーを再起動せずに Python モジュールをリロードするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-27 13:50:14387ブラウズ

How to Reload a Python Module Without Restarting the Server?

サーバーのアップグレードのための 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。