我正在尝试运行一批Matlab脚本,但不知何故它无法工作。代码只是保持空闲,并且在超时之前什么也不做。
这是最小的代码
import subproces as sub
cod = 'timeout -k 300 400 matlab -nodisplay -nosplash -r test'.split()
proc = sub.run(cod, stdout=sub.PIPE, stderr=sub.PIPE)这些代码行一直运行到达到超时条件,在stdout和stderr中没有值。
如果我将这些行复制到终端中,它会完美地工作。(脚本本身以«exit»结尾,因此在完成后它将返回到终端)
我已经用Octave完成了类似的过程,它工作得天衣无缝。
我尝试过使用matlab的python模块,但是我目前使用的Python模块与我当前的Python版本不兼容,另一种选择是降级Python,但我不愿意这样做。
超时条件是必需的,因为其中一些脚本可以无限循环。我正在检查学生代码。
编辑:在这里讨论之后,主要的罪魁祸首似乎是超时命令,如果去掉它,脚本就会工作。
发布于 2020-05-01 20:05:22
您可以使用subprocess.run的timeout参数
import subproces as sub
cod = 'matlab -nodisplay -nosplash -r test'.split()
proc = sub.run(cod, stdout=sub.PIPE, stderr=sub.PIPE, timeout=300)https://stackoverflow.com/questions/61540587
复制相似问题