Matlab功能执行的时间限制

时间:2011-06-21 09:05:24

标签: matlab

我希望在Matlab中限制函数的执行,所以如果它在X秒内不会返回答案,则调用将被中止。
我知道使用timeout的2011 Matlab版本是可能的,但我已经获得了2010版的Matlab。是否仍然可以限制功能的执行时间?

1 个答案:

答案 0 :(得分:3)

正如其他人所指出的那样,你无法在Matlab中本地做到这一点。但是在Unix系统上,例如Linux或Solaris我以前使用了一些脏的黑客来达到预期的效果。

不是将.m文件作为带参数的函数调用,而是将所有参数数据保存到.mat文件中并编写shell命令以调用Matlab并运行.m文件,例如: myfunc.m作为一个独立的例程,例如。

!bash -c "ulimit -t 3;matlab -nodisplay < myfunc.m"

这会将myfunc.m限制为3秒的CPU执行时间。请注意,CPU不包括任何磁盘访问等。如果您需要其他行为,还可以传递给ulimit的其他标志。

在myfunc.m中你必须保存myfunc.m想要返回到.mat文件的数据并在你的调用程序中重新加载它。有点讨厌的黑客,但我测试了它,它的工作原理。注意使用bash shell作为内部ulimit命令。