作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我正在运行一个函数 fun()
,但我无权访问其内部(因此我无法在其中添加条件)。对于某些输入,该函数可能会很慢。如果程序运行时间超过一定时间,我该如何终止程序?
更新:我正在测试各种输入集的功能。对于其中一些人来说,这需要更多。我想跳过那些花费太长时间的内容,然后转到下一个输入。
最佳答案
不幸的是,MATLAB 的单线程特性使事情变得比应有的更加复杂。我的第一个想法是使用计时器,但即使计时器回调也不会中断繁忙的 MATLAB,因为所有 M 代码都是从同一线程执行的。
我会通过从另一个 MATLAB 进程调用该函数并监视该进程来解决这个问题。您可以使用内置的 SYSTEM 函数调用 MATLAB,并使用 -r 命令行参数指定要运行的脚本的名称。伪代码看起来像这样。这很粗糙且未经测试,但应该可以让您了解:
% Create Timer object
timerObj = timer();
% set timer properties, with 60 second interval
set(timerObj, 'executionMode', 'singleShot', 'StartDelay', 60, 'timerFcn', @timerCallback);
% call MATLAB. It will run in background
system( 'matlab.exe -r myscript &' );
function timerCallback(varargin)
% if the other matlab process is still running when the timer is elapsed, kill it. perhaps use another system() call to run taskkkill.exe (if on windows)
关于matlab - 如何在一定时间后停止运行matlab代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680520/
我正在尝试开发右边框/Angular 具有特定 Angular (30°) 的表格。我见过一些类似的解决方案,但它们都无法在一定程度上发挥作用。如果我想从 30° 改变到 20°,我不想花太多力气。
我是一名优秀的程序员,十分优秀!