13

コンテキスト:私は現在、Pythonを使用して、大規模な天体画像システムのデータ削減パイプラインをコーディングしています。メインパイプラインクラスは、実験データをいくつかの個別の処理「ステージ」に渡します。

ステージは、パッケージを構成する個別の.pyファイルに書き込まれます。使用可能なステージのリストは実行時に生成されるため、ユーザーはデータを実行するステージを選択できます。このアプローチの目的は、ユーザーが将来的に追加のステージを作成できるようにすることです。

問題:すべてのパイプライン構成パラメーターとデータ構造は、(現在)メインパイプラインクラス内にあります。実行時にインポートされるステージ内からこれらにアクセスする簡単な方法はありますか?

私の現在の最善の試みは、循環インポートとクラス変数を使用しているため、「間違っている」とやや原始的なようです。パイプラインインスタンスが、呼び出す各ステージへの引数としてそれ自体への参照を渡す方法はおそらくありますか?

大規模なPythonプロジェクトをコーディングするのはこれが初めてであり、設計知識の欠如が実際に示されています。

どんな助けでも大歓迎です。

4

4 に答える 4

2

2 つのオプション:

  1. 構成を別の場所に置く: 構成モジュールを用意し、django 構成システムのようなものを使用してそれを利用できるようにします。
  2. ステージにパイプライン クラスをインポートさせる代わりに、インスタンス化時にパイプライン インスタンスを渡します。
于 2012-07-29T21:04:12.867 に答える
2

私の同僚は、シミュレーション データ (svn checkout https://svn.gforge.hlrs.de/svn//opensesame )から天体物理学の合成放出マップの同様のパイプラインに取り組んでいます。

彼がこれを行う方法は次のとおりです。

設定は別のオブジェクト(実際にはあなたの場合のように辞書)にあります。

段階は次のいずれかです。

  • インスタンス化時に構成オブジェクトをコンストラクター引数として受け取ります
  • 後で割り当てを介して構成を取得します (例: stage.config = config_object)
  • 実行時に設定オブジェクトを引数として受け取る (例: stage.exec(config_object, other_params))
于 2012-07-30T14:42:18.793 に答える