批处理作业的结果有可能取决于其他批处理作业的结果。通过把getJobReturn函数中的blocking设置为true,我们可以保证批处理作业在其他批处理作业全部完成后再执行。DolphinDB会根据批处理作业脚本来判断作业之间的依赖关系,所以我们不需要显示地使用作业ID来指定依赖关系。
下面的例子有3个批处理作业:job1,job2和job3。job1需要5秒钟完成,job2需要4秒钟完成,它们分别计算各自输入变量的和。job3把job1和job2的结果汇总,因此job3需要在job1和job2都完成后才执行。
def job1(x){
sleep(5000)
return x.sum()
}
def job2(y){
sleep(4000)
return y.sum()
}
def job3(x, y){
job1Id = submitJob("job1","",job1{x})
job2Id = submitJob("job2","",job2{y})
job1result=getJobReturn(job1Id,true)
job2result=getJobReturn(job2Id,true)
return job1result + job2result
}
x=[1,2,3]
y=[1,2,3,4]
job3Id = submitJob("job3", "", job3{x,y})
getJobReturn(job3Id,true);
结果是16,执行用时比5秒多一点。
Download source code here.