如何强制SAS等待命令完全执行?

2024-09-27 00:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一点问题,让我的SAS会话启动,然后等待Python脚本完成。我正在使用Python进行一包单词分析,并加入一些情绪分析以获得风味,脚本执行得很好,但SAS在启动后继续运行。这就产生了一个问题,因为SAS程序的其余部分需要Python脚本的结果才能正常运行。

我尝试过在SAS中使用waitforall命令,但对于这个特定的问题,这似乎不起作用。

下面是我在SAS中执行的代码:

%pScript_loc=path\pythonTester.py; /* LOCATION OF THE PROGRAM */
filename temp pipe "otherPath\python.exe &pScript."; /* LOCATION OF PYTHON EXECUTABLE */
data _null_;
infile temp;
input;
put _infile_;
run;

waitfor _all_;

这应该确保SAS程序启动Python程序,但似乎不能有效地让SAS等待Python完成它的工作。


Tags: of代码命令程序脚本location单词temp
2条回答

尝试使用x命令,而不是data _null_步骤。xsync在SAS中默认是打开的,这意味着在Python脚本完成之前,OS不会将控制权返回给SAS。在

%let %pScript_loc=path\pythonTester.py;

x "otherPath\python.exe &pScript.";

您还可以选择使用saspy包并从中执行所有操作,完全跳过SAS编辑器。在

waitforsystask是独占的 文件名有点不同

filename x pipe 'dir';
data _NULL_;
  infile x DLM='$';
  length str $80;
  input str;
  put str;
run;
data _NULL_;
  infile x DLM='$';
  length str $80;
  input str;
  put str;
run;

每次datastep访问文件时,都会打开并读取管道,直到关闭为止。这意味着您可以在同一时间打开两次,而无需等待程序结束。在

相关问题 更多 >

    热门问题