自分のMakefileを構造化して、シェルスクリプトを望む順番で実行する際に問題があります。Makefileと並行してタスクを実行する
は、ここに私の現在のメイク
## Create data splits
raw_data: src/data/get_data.sh
src/data/get_data.sh
hadoop fs -cat data/raw/target/* >> data/raw/target.csv
hadoop fs -cat data/raw/control/* >> data/raw/control.csv
hadoop fs -rm -r -f data/raw
touch raw_data_loaded
split_data: raw_data_loaded
rm -rf data/interim/splits
mkdir data/interim/splits
$(PYTHON_INTERPRETER) src/data/split_data.py
## Run Models
random_forest: split_data
nohup $(PYTHON_INTERPRETER) src/models/random_forest.py > random_forest &
under_gbm: split_data
nohup $(PYTHON_INTERPRETER) src/models/undersampled_gbm.py > under_gbm &
full_gbm: split_data
nohup $(PYTHON_INTERPRETER) src/models/full_gbm.py > full_gbm &
# Create predictions from model files
predictions: random_forest under_gbm full_gbm
nohup $(PYTHON_INTERPRETER) src/models/predictions.py > predictions &
問題私は##Run Models
セクションを開始するまで
すべてがうまく動作です。これらはすべて独立したスクリプトであり、一度実行するとsplit_data
が終了します。 3つのモデルスクリプトを同時に実行したいので、それぞれをバックグラウンドで&で実行します。
私の最後の仕事であるpredictions
が先行する3つのタスクと同時に起動してしまうという問題があります。私がしたいことは、3つの同時モデルスクリプトが終了し、predictions
が実行されていることです。それが終了するまで実行されませんpredictions
よう
私の試み
私の提案された解決策は、&せずに私の最終的なモデルのタスク、full_gbm
を実行することです。これはうまくいくはずですが、これを達成するためのヒッピーな方法がないのだろうか?同じ結果を達成するためにターゲット変数を構成する方法はありますか?