启动SAS会话时出现了一个问题,随后等待Python脚本完成。我正在使用Python进行词袋分析,并添加了一些情感分析以获取味道,脚本执行得很好,但是SAS在启动它后一直坚持下去。这就提出了一个问题,因为SAS程序的其余部分要求Python脚本的结果才能正确运行。
我尝试在SAS中使用waitfor all 命令,但这似乎不适用于该特定问题。
这是我在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完成其工作。
答案 0 :(得分:2)
尝试使用x
命令而不是data _null_
步骤。 xsync
在SAS中默认为打开状态,这意味着在Python脚本完成之前,操作系统不会将控制权返回给SAS。
%let %pScript_loc=path\pythonTester.py;
x "otherPath\python.exe &pScript.";
您还可以选择使用saspy
软件包并从那里进行所有操作,而完全跳过SAS编辑器。
答案 1 :(得分:0)
waitfor
专用于systask
文件名有点不同
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;
每次数据访问文件时,都会打开管道并读取直到关闭。这意味着您可以打开两次相同的时间,而无需等待程序结束。