Example 9. 批处理依赖



批处理作业的结果有可能取决于其他批处理作业的结果。通过把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.