【问题标题】:MATLAB execution runtime limitationMATLAB 执行运行时限制
【发布时间】:2021-01-04 06:06:25
【问题描述】:

我想限制我在代码中使用的函数的执行运行时间。有可能吗?

我正在使用带有 MATLAB R2015a 的 Windows 10(与之前提出的这个问题不同:Matlab time limit for function execution),因此是否进行了任何更改以使其成为可能,或者是否有任何调整使其成为可能?

例如:

H = transpose(homograpyMatrix);
t = projective2d(homograpyMatrix);
result = imwarp(img, t);  % If execution takes more than X seconds - stop running

如果计算 imwarp 的时间过长(超过预定义的 X 秒),我希望 MATLAB 停止正在运行的进程。有可能吗?

请注意,我不想在循环中使用 tic-toc 作为停止条件,因为情况并非如此。

【问题讨论】:

  • 困难,Matlab 确实为您提供了计算运行函数所需时间的工具 - 但要按照您的要求,您将需要一个多线程环境,其中一个线程执行代码,而另一个线程保持计时器。据我所知,控制这个变量的选择有限。这是您可能想阅读的内容blogs.mathworks.com/pick/2008/05/05/…
  • 没有通用的 matlab 包装器。一些 matlab 函数,如 eig 是内置的,这些函数没有中断钩子。
  • 如果你在 linux 上运行,我认为你应该能够强制程序在一段时间后关闭。不知道怎么做,但我已经看到它正在完成。

标签: matlab time-limiting


【解决方案1】:

你有两个选择:

并行计算工具箱

使用Parallel Computing Toolbox,您可以定义timeout for idle calculations。请务必记住,每当您的进程进入 parfor 循环或使用 parfeval 时,都会重置此超时。

硬编码超时

在这种情况下,您将实现一个硬编码的超时变量并定期检查它以评估您是否必须停止正在运行的进程。

【讨论】:

猜你喜欢
  • 2012-07-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 2019-07-02
  • 2012-05-04
  • 2018-08-26
  • 1970-01-01
相关资源
最近更新 更多