プラグインメカニズムは、コード/関数の逆依存関係をメインプログラムに挿入する方法です。コンパイルされた言語は、動的ライブラリを動的にロードすることによってプラグインを実装します。 Pythonのようなスクリプト言語の場合、プラグインメカニズムはより単純です。
機構
Pythonの__import__メソッドは、Pythonファイルを動的にロードできます。つまり、特定のpyスクリプトのファイル名を__import__のパラメーターとして使用し、プログラムの実行時にpyスクリプトプログラムモジュールをロードできます。対応するimportキーワードは、依存するpyモジュールを静的にロードすることです。
説明
__ import __()関数は、クラスと関数を動的にロードするために使用されます。
モジュールが頻繁に変更される場合は、__ import __()を使用して動的にロードできます。
文法
__ import__構文:
__ import__(name[, globals[, locals[, fromlist[, level]]]])
パラメータの説明:
name —モジュール名
動的にロードする必要のあるpyスクリプトが任意のディレクトリに保存されている場合は、最初にスクリプト検索パスを追加する必要があります。
sys.path.append(modulePath)
応用例
# 検索パスを増やす
sys.path.append(modulePath)
# スクリプトをロード
module =__import__(moduleName)
# スクリプトオブジェクトを保存します。保存しないと破棄されます
self.modules[moduleName]= module
# プラグインでメソッド初期化を呼び出す
module.InitModule(self)
総括する
プラグインメカニズムを使用して、高い凝集性と低い結合プログラムを実現します。
実際には、私たちが扱うタスクはいくつかの実行可能なプログラムによって完了されます。実行可能なプログラムは、C ++ 、. Net、Java、またはその他のスクリプトプログラムです。現時点では、メインのタスクフローを定義するための接着剤としてPythonを使用しています。フレームワークは、プラグインメカニズムを使用して、実行する必要のあるタスクを動的に挿入します。
さらに、さまざまな状況でさまざまなexeを使用する必要がある場合は、jsonを使用して必要なexeの組み合わせを定義するだけで済み、メインプログラムは変更なしで変換されたビジネスニーズを満たすことができます。
補足知識:Kustoはpythonプラグインを使用します
プロセス全体では、pythonスクリプトを入力すると、kustoデータが自動的にpandasDataFrameに変換されます。
pythonスクリプトの出力は、列名と変数が変更されないままであるkustoテーブルに自動的に変換されます。
Pythonスクリプトとそれに続くKustoの出力
以下の点にご注意ください
typeofは、pythonスクリプトの出力パラメーターです。
typeofのデータタイプは、変数名と変数タイプを含め、pythonスクリプトによって出力されたpandas DataFrame列とまったく同じです。これらに一貫性がない場合、エラーが報告されます。
typeofで、は多重入力のデータタイプを示します。たとえば、(、age:int)は、入力が出力に基づいて複数の年齢属性を持っていることを示します。
pythonスクリプトの入力は、DataFrameに変換されたkustoテーブルであり、pythonスクリプトの変数名はdfです(自動的に照合されます)。同時に、結果として出力DataFrameに名前を付ける必要があり、プログラムは自動的に出力します。
Pythonは、kargs ["topK"]の形式で外部パラメーターを受け入れることができます。kargsはパラメーターを渡すためのシステムのデフォルト変数であり、pythonスクリプトの最後にあるkustoはpack( "topK"、10)の形式で受け取ります。パラメーター
6 . pythonスクリプトは、kustoコードで直接記述するか、リンクの形式でアクセスできます。
Pythonプラグインメカニズムの実装に関する上記の詳細な説明は、エディターによって共有されるすべてのコンテンツです。参照を提供したいと思います。
Recommended Posts