gpt4 book ai didi

multithreading - 如何使函数在MATLAB中无阻塞?

转载 作者:行者123 更新时间:2023-12-03 13:03:39 25 4
gpt4 key购买 nike

有没有什么方法可以使函数在MATLAB中成为非阻塞函数?

例如程序

for t = 0 : 1 : 1000
if mod(t, 100) == 0
foo();
end
end

它每100个周期调用 foo(),而 foo()花费约50个周期。

我想在后台任务中调用 foo(),并在完成时调用某个回调函数。有没有什么方法可以在MATLAB中实现呢?

最佳答案

要在Matlab中进行多线程处理,您应该使用“批处理”命令(我认为您必须具有并行计算工具箱),

这是例子:

我喜欢在matlab中运行一个脚本,这需要很长时间

示例脚本:

for i=1:1e8
A(i)=sin(i*2*pi/1e8);
end

我将此脚本保存为“da”!

然后以批处理模式运行它,我在matlab中编写了以下代码:
 job=batch("da")

该作业以批处理模式运行,您可以同时使用matlab
在完成工作后检索结果,您可以简单地编写:
 load(job,'A')

结果数组A将在您的工作空间中

您可以从主页>环境>并行>监视作业中打开“监视作业gui”
最后,您可以使用以下简单代码删除作业:
 delete(job)

要加载用于批处理的函数,您可以简单地使用以下语句:
 j=batch(fcn, N, {x1,x2,...,xn})

其中fcn是您的函数名称,N是输出数组的数量,x1,... xn是函数输入数组。

关于multithreading - 如何使函数在MATLAB中无阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42779827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com