いくつかの遅いインポートがある Python プログラムがあります。必要になるまでインポートを遅らせたいと思います。たとえば、ユーザーがヘルプ メッセージを印刷しようとしているだけの場合、遅いモジュールをインポートするのはばかげています。これを行うための最も Pythonic な方法は何ですか?
私が遊んでいた解決策を答えとして追加します。でも、皆さんがもっとうまくやれることは知っています。
いくつかの遅いインポートがある Python プログラムがあります。必要になるまでインポートを遅らせたいと思います。たとえば、ユーザーがヘルプ メッセージを印刷しようとしているだけの場合、遅いモジュールをインポートするのはばかげています。これを行うための最も Pythonic な方法は何ですか?
私が遊んでいた解決策を答えとして追加します。でも、皆さんがもっとうまくやれることは知っています。
必要な場所にインポートするだけです。モジュールが一度インポートされると、それ以降のインポートが迅速になるようにキャッシュされます。同じモジュールを 20 回インポートすると、最初の 1 つだけが遅くなります。
サンプルモジュールとして「sys」を使用すると、次のコードが機能する可能性があります
class Importsys(object):
def __setattr__(self, name, value):
global sys
import sys
setattr(sys, name, value)
def __getattribute__(self, name):
global sys
import sys
return getattr(sys, name)
sys = Importsys()
これにより、sys モジュールを使用しようとすると、自動的にインポートされ、sys モジュール変数が置き換えられます。ただし、Just-In-Time インポートが必要なモジュールごとに個別のクラスを作成する必要があります。__import__('sys') 関数を使用できると思いますが、再帰の問題が発生するようです。