怠惰な&自己破壊的なオブジェクト(xonsh.lazyasd
)¶
モジュールの読み込みを高速化するための遅延型および自己破壊型のコンテナ。
-
クラス
xonsh.lazyasd.
BackgroundModuleLoader
(名前、パッケージ、置換、* args、** kwargs )[ソース] ¶ バックグラウンドでモジュールをロードするスレッド。
-
クラス
xonsh.lazyasd.
BackgroundModuleProxy
(modname )[ソース] ¶ バックグラウンドでロードされたモジュールのプロキシオブジェクト。モジュールがロードされるまで属性のアクセスをブロックします。
-
class
xonsh.lazyasd.
LazyBool
(load、ctx、name )[ソース] ¶ 最初に尋ねられたときにlazilyブール値を計算するオブジェクトのようなブール値。ロードされると、この結果は指定されたコンテキスト(通常はコールサイトのグローバル)に置き換えられます。
たとえば、実際に使用されるまで複合ブールを防ぐことができます。
ALIVE = LazyDict(lambda: not DEAD, globals(), 'ALIVE')
パラメーター: - load : 引数のない関数
実際のブール値評価を実行するローダー関数。
- ctx : マッピング
LazyBoolインスタンスを完全にロードされたマッピングに置き換えるためのコンテキスト。
- 名前 : str
ロードされたマッピングを与えるためにコンテキスト内の名前。これは 、割り当てのLHS上の名前でなければなりません。
-
クラス
xonsh.lazyasd.
LazyDict
(ローダー、ctx、名前)[ソース] ¶ 辞書のようなオブジェクトは、キーローダー関数のペアの最初のdictからその値を遅延ロードします。各キーは、その値が最初にアクセスされるときにロードされます。完全にロードされると、このオブジェクトは指定されたコンテキスト(通常は呼び出しサイトのグローバル)を指定された名前で置き換えます。
たとえば、実際に使用されるまで、一連の正規表現のコンパイルを防ぐことができます。
RES = LazyDict({ 'dot': lambda: re.compile('.'), 'all': lambda: re.compile('.*'), 'two': lambda: re.compile('..'), }, globals(), 'RES')
パラメーター: - ローダー : 引数のない関数へのキーのマッピング
アクセス時に実際の値の構築を行うローダー関数のマッピング。
- ctx : マッピング
LazyDictインスタンスを完全にロードされたマッピングで置き換えるためのコンテキスト。
- 名前 : str
ロードされたマッピングを与えるためにコンテキスト内の名前。これは 、割り当てのLHS上の名前でなければなりません。
-
class
xonsh.lazyasd.
LazyObject
(load、ctx、name )[ソース] ¶ 最初に属性にアクセスするときに、load関数を介してオブジェクトを遅延ロードします。ロードされると、指定されたコンテキスト(通常はコールサイトのグローバル)が指定された名前で置き換えられます。
たとえば、実際に使用されるまで、正規表現のコンパイルを防ぐことができます。
DOT = LazyObject((lambda: re.compile('.')), globals(), 'DOT')
パラメーター: - load : 引数のない関数
実際のオブジェクト構築を行うローダ関数です。
- ctx : マッピング
load()によって返されたオブジェクトでLazyObjectインスタンスを置き換えるためのコンテキスト。
- 名前 : str
ロードされたオブジェクトを提供するコンテキスト内の名前。これは 、割り当てのLHS上の名前でなければなりません。
-
xonsh.lazyasd.
load_module_in_background
(名前、パッケージ=なし、デバッグ= 'DEBUG'、env =なし、置き換え=なし)[ソース] ¶ バックグラウンドスレッドでモジュールをロードするためのエントリポイント。
パラメーター: - 名前 : str
バックグラウンドスレッドでロードするモジュール名。
- パッケージ : strまたはNone、オプション
パッケージ名は、importlib.import_module()と同じ意味です。
- デバッグ : str、オプション
環境内で参照するシンボル名をデバッグする。
- env : マッピングまたはなし、オプション
Environmentこれはデフォルトで__xonsh __。env(使用可能な場合)とos.environ(そうでない場合)です。
- 置き換え : マッピングまたはなし、オプション
lazyロードされたモジュールをインポートする完全修飾モジュール名(foo.bar.bazなど)を辞書にマッピングします。そのモジュールには変数名が含まれています。たとえば、foo.barがモジュールaをbとしてインポートすると、このdictは{'foo.bar': 'b'}になります。
戻り値: - module : ModuleType
これは、sys.modulesにある元のモジュールか、モジュールが完全にロードされるまで遅延属性アクセスまでブロックするプロキシモジュールです。