簡體   English   中英

使用 python 子進程和超時命令運行 Matlab 腳本

[英]Run Matlab script with python subprocess and timeout command

我正在嘗試運行一批 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 版本不兼容,另一種方法可能是將 ZA7F5F35426B927411FC9231B56382173 降級,但 I'm.

超時條件是必需的,因為其中一些腳本可以無限循環。 我正在檢查學生代碼。

編輯:在這里討論之后,罪魁禍首似乎是超時命令,如果拿走,腳本就可以工作。

您可以使用subprocess.runtimeout參數:

import subproces as sub
cod = 'matlab -nodisplay -nosplash -r test'.split()
proc = sub.run(cod, stdout=sub.PIPE, stderr=sub.PIPE, timeout=300)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM