与Makefile并行运行任务
我在构建Makefile以按所需顺序运行shell脚本时遇到问题 这是我当前的makefile与Makefile并行运行任务,makefile,Makefile,我在构建Makefile以按所需顺序运行shell脚本时遇到问题 这是我当前的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/co
## 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 &
问题
在我开始运行模型部分之前,一切正常。这些都是独立的脚本,一旦split_数据完成,它们都可以运行。我想同时运行3个模型脚本中的每一个,所以我在后台使用&
问题是,我的上一个任务预测与前面的三个任务同时开始运行。我想让3个模型脚本同时完成,然后运行预测
我的尝试
我建议的解决方案是运行我的最后一个模型任务full_gbm,而不使用&,这样在完成之前预测不会运行。这应该是可行的,但我想知道是否有一种不太“黑”的方法来实现这一点-是否有某种方法来构造目标变量以实现相同的结果?您没有说您使用的是Make的哪个实现。如果它是GNUMake,您可以使用-j选项调用它,以允许它决定哪些作业应该并行运行。然后可以从所有命令中删除nohup和&命令;在所有的随机林(位于_gbmfull _gbm下)完成之前,预测不会开始,而构建本身也不会在预测完成之前结束 此外,您不会丢失命令的最重要的退出状态