首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SAS中的并行处理,等待空闲会话

SAS中的并行处理,等待空闲会话
EN

Stack Overflow用户
提问于 2015-06-12 08:17:13
回答 2查看 385关注 0票数 2

假设我已经注册了两个会话:

代码语言:javascript
运行
复制
signon slave1;
signon slave2;

假设我有10个作业由执行

代码语言:javascript
运行
复制
%execute_job( parameter= 1);
%execute_job( parameter= 2);
%execute_job( parameter= 3);
.
.
.
%execute_job( parameter= 10);

我需要在%execute_job中添加什么才能让它继续等待空闲会话,并将作业提交给它找到的第一个空闲会话?

我试过马卡瓦的东西也没用。

EN

Stack Overflow用户

发布于 2015-06-12 19:29:56

考虑一下:我在signon上使用cmacvar选项来为远程会话状态指定一个本地宏变量。在syslput中,我在两个从服务器上创建了远程my_id宏变量,以便它们知道“自己是谁”。

然后我有%job宏接收从属的ID,在上面运行一些代码。对于现实世界,还应该有一些要运行的作业的参数。在这里,我只模拟较短的job1和较长的job2。

在%run_jobs中,我做了一些循环来尝试多次运行从进程。要点是在WAITFOR _ANY_语句中为你做等待。

代码语言:javascript
运行
复制
signon slave1 sascmd="!sascmd" cmacvar=slave1; 
signon slave2 sascmd="!sascmd" cmacvar=slave2; 

%syslput my_id=1 /remote=slave1;
%syslput my_id=2 /remote=slave2;

rsubmit slave1;
options nomprint nosource nonotes;
endrsubmit;
rsubmit slave2;
options nomprint nosource nonotes;
endrsubmit;
/*
my_id is remote
slave_id is local
*/;
%macro job(slave_id);
rsubmit slave&slave_id. wait=no;
    data _null_;
         %if &slave_id eq 2 %then %do;
            x = sleep(2);
         %end;
         x = sleep(4);
         s = put(DATETIME(), DATETIME.) || " at &my_id.!";
        putlog s;
    run;
endrsubmit;
%mend;


%macro run_jobs;
    %do i=1 %to 4;
        %if &slave1 eq 0 %then %do;
            %put Slave1 starting;
            %job(1)
        %end;
        %else %put Slave1 working;
        %if &slave2 eq 0 %then %do;
            %put Slave2 starting;
            %job(2)
            %put Slave2: &slave2;
        %end;
        %else %put Slave2 working;
        WAITFOR _any_ slave1 slave2;
        *LISTTASK _ALL_ ;
        %put at end of loop &i:;
        %put Slave1: &slave1;
        %put Slave2: &slave2;
    %end;
%mend;


options nomprint nosource nonotes;
%run_jobs

signoff slave1;
signoff slave2;
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30793467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档