未来
计划运行的函数
描述
一个未来
object表示计划在MATLAB中运行的函数®。
如果你使用
parfeval
或parfevalOnAll
要创建未来
, MATLAB运行函数:在后台,如果你指定的话
backgroundPool
当创建未来
。在并行池上,如果未指定
backgroundPool
当创建未来
,拥有并行计算工具箱™,并适用于以下其中一项:您有一个当前打开的并行池。
您已经启用了自动创建池。
串行,否则。
如果你使用
afterEach
或毕竟
要创建未来
,该函数由您当前的MATLAB会话运行。它不是在后台运行,也不是在任何并行池上运行。
创建
创建一个未来
当您执行下列操作之一时:
使用
parfeval
调度一个函数在后台、并行池或串行中运行。使用
parfevalOnAll
调度一个函数在池中或串行的所有worker上运行。使用
afterEach
或毕竟
计划一个函数在其之后运行未来
对象完成。
接下来是未来对象的可用类型。
未来的对象 | 描述 |
---|---|
FevalFuture |
由parfeval |
FevalOnAllFuture |
由parfevalOnAll |
AfterEachFuture |
由afterEach |
AfterAllFuture |
由毕竟 |
属性
一般选择
CreateDateTime
- - - - - -日期和时间未来
创建
datetime
标量
此属性是只读的。
的日期和时间未来
对象被创建,指定为datetime
标量。
错误
- - - - - -错误信息
异常
标量|单元阵列
此属性是只读的。
错误信息,指定为MException
的标量或单元格数组异常
对象。
如果你创建一个
未来
对象使用parfeval
或毕竟
,此属性是单元格数组或异常
标量。如果未来
对象完成时没有错误,则此属性为空。如果你创建一个
未来
对象使用afterEach
属性是一个单元格数组,每次执行一个单元格未来
出错了,还是a1
——- - - - - -1
单元格数组,如果未来
被取消了。如果未来
对象完成时没有错误,则此属性为空。如果你创建一个
未来
对象使用parfevalOnAll
,此属性是一个单元格数组,如果在工人上发生任何错误,则每个工人都有一个单元格1
——- - - - - -1
单元格数组,如果未来
被取消了。如果未来
对象完成时没有错误,则此属性为空。
FinishDateTime
- - - - - -函数完成的日期和时间
datetime
标量
此属性是只读的。
函数完成的日期和时间,指定为datetime
标量。
的未来
当MATLAB运行完与其相关的函数时,该函数就结束运行。
如果函数与未来
对象未完成运行,则此属性为空datetime
数组中。
数据类型:datetime
函数
- - - - - -与未来
function_handle
此属性是只读的。
函数与未来
对象,指定为函数句柄。
如果您创建
未来
使用parfeval
或parfevalOnAll
, MATLAB在后台、并行池(如果您有并行计算工具箱)或串行上运行函数。如果您创建
未来
使用afterEach
或毕竟
,该函数由您当前的MATLAB会话运行。它不是在后台运行,也不是在任何并行池上运行。
例子:@magic
数据类型:function_handle
ID
- - - - - -标识符
整数标量
此属性是只读的。
标识符,指定为整数标量。
数据类型:双
InputArguments
- - - - - -函数的输入参数
单元阵列
此属性是只读的。
输入函数的参数,指定为单元格数组。
当调度函数fcn
由函数
属性运行,它运行为fcn (X {:})
,在那里X
此属性指定的输入参数的单元格数组。
例子:{[1]}
例子:{[1, 2], (2, 1)}
数据类型:细胞
NumOutputArguments
- - - - - -函数返回的参数个数
整数标量
此属性是只读的。
函数返回的参数个数,指定为整数标量。
属性指定的函数函数
属性必须返回至少与此属性指定的相同数量的参数。
数据类型:双
OutputArguments
- - - - - -从运行函数输出参数
单元阵列
此属性是只读的。
运行函数的输出参数,指定为单元格数组。
属性为空单元格数组未来
对象未完成运行或未来
对象以错误结束。
例子:{[3.14]}
数据类型:细胞
RunningDuration
- - - - - -当前持续时间未来
持续时间
标量
的当前持续时间未来
对象,指定为持续时间
标量。
当未来
对象完成运行后,此属性变为常量。
StartDateTime
- - - - - -日期和时间未来
开始跑步
datetime
标量
此属性是只读的。
的日期和时间未来
对象开始运行,指定为datetime
标量。
的未来
当MATLAB开始运行与它相关的函数时开始运行。
数据类型:datetime
状态
- - - - - -未来的现状
“排队”
|“奔跑”
|“完成”
|“失败”
|“不可用”
此属性是只读的。
未来的当前状态,指定为以下值之一:
“排队”
- - - - - -未来
处于队列中,并计划与之关联的函数运行。“奔跑”
对象关联的函数未来
当前正在运行。“完成”
或“失败”
对象关联的函数未来
完成了运行。“不可用”
- - - - - -未来
无法运行。预分配的元素未来
数组都有这个状态。
FevalFuture
选项
日记
- - - - - -文本输出
特征向量
此属性是只读的。
文本输出,指定为字符向量。
属性指定的函数,此属性是一个字符向量,其中包含显式运行时显示的所有文本函数
属性指定的输入参数InputArguments
财产。
父
- - - - - -队列的未来
对象
平行的。FevalQueue
对象
此属性是只读的。
队列的未来
对象,指定为平行的。FevalQueue
对象。
这个属性等于的队列未来
对象的FevalQueue
未来所依赖的池子。
此属性不可用未来
在基于线程的环境中运行函数的对象。
读
- - - - - -标志,表示输出是否已被读取
真正的
|假
此属性是只读的。
标志,指示输出是否已读取,指定为真正的
或假
。
此属性设置为真正的
只有当你使用fetchOutputs
或fetchNext
。
数据类型:逻辑
FevalOnAllFuture
选项
日记
- - - - - -函数执行时产生的文本
字符向量的单元格数组
此属性是只读的。
记录的文本,指定为字符向量的单元格数组。
属性指定的函数,此单元格数组包含显式运行时显示的所有文本函数
属性指定的输入参数InputArguments
财产。
jth元素中捕获的文本输出th泳池里的工作人员未来
。
数据类型:细胞
父
- - - - - -队列的未来
对象
平行的。FevalQueue
对象
此属性是只读的。
队列的未来
对象,指定为平行的。FevalQueue
对象。
这个属性等于的队列未来
对象的FevalQueue
未来所依赖的池子。
此属性不可用未来
在基于线程的环境中运行函数的对象。
对象的功能
例子
函数在后台运行完成后再运行回调函数
这个例子展示了如何使用afterEach
调度回调函数在某个函数在后台运行结束后运行。
使用parfeval
运行函数兰特(1)
并检索一个输出。指定backgroundPool
作为在后台运行函数的第一个参数。重复10次,创建10个未来
对象。
为i = 1:10 f(i) = parfeval(backgroundPool,@rand, 1,1);结束
在每一个未来
控件显示该值disp
函数。的输入参数disp
输出参数是否来自每一个未来
。属性的第三个参数afterEach
函数作为0
从回调中不返回输出。
afterEach (f @disp 0);
当函数在后台运行时更新等待栏
这个例子展示了如何使用afterEach
用后台运行的函数的进度更新等待栏。
创建一个等待栏,w
。
W = waitbar(0,“请稍等……”);
为您的为
循环,N
。存储当前已完成迭代的数量,0
,为总迭代次数,N
,在用户数据
属性。
N =20.;w.UserData = [0 N];
运行一个为
循环与N
迭代。在每次迭代中,使用parfeval
而且backgroundPool
运行暂停
在后台随机播放一段时间。存储每个未来
对象。
为i = 1:N延迟= rand;f(i) = parfeval(backgroundPool,@pause,0,delay);结束
使用helper函数updateWaitbar
每次更新后更新等待栏未来
完成。
afterEach (f, @ (~) updateWaitbar (w), 0);
使用删除
关闭等待栏后的一切未来
对象完成。
毕竟(f, @(~)删除(w), 0);
定义Helper函数
定义辅助函数updateWaitbar
。函数的第一个元素加1用户数据
属性,然后使用该向量计算进度。
函数updateWaitbar (w)使用UserData属性更新一个等待栏。检查该等待栏是否是已删除对象的引用如果isvalid (w)增加已完成迭代的数量w.UserData(1) = w.UserData(1) + 1;计算进度progress = w.UserData(1) / w.UserData(2);更新等待栏waitbar(进步,w);结束结束
停止后台运行的函数
这个例子展示了如何停止在后台运行的MATLAB函数。当你使用parfeval
在后台运行一个函数,MATLAB立即返回一个未来
对象。长时间运行的函数可以阻止其他函数在后台运行。要停止该函数运行,必须使用取消
函数而不是选择现场编辑>执行>停止。
使用parfeval
运行暂停(正)
没有检索任何输出。指定backgroundPool
作为在后台运行函数的第一个参数。当你使用parfeval
,则创建一个未来
对象。
f = parfeval(backgroundPool,@pause,0,Inf);
的状态未来
对象。
f.State
Ans =“奔跑”
当你奔跑parfeval
,您安排一个函数在后台运行。当后台池没有足够的资源运行该函数时,可以使用未来
在“排队”
状态。当该函数由后台池运行时,将未来
在“奔跑”
状态。
若要停止该函数在后台运行,请取消未来
对象。
取消f.State (f)
Ans = 'finished'
函数现在在“完成”
状态。
提示
未来
对象是本地对象,只能在创建它们的MATLAB会话中访问。例如,如果你使用
parfeval
在后台运行一个函数并创建一个未来
对象,未来
在后台工作人员的工作空间中不可用。
版本历史
在R2013b中引入
另请参阅
平行的。池
(并行计算工具箱)|parfeval
(并行计算工具箱)|parfevalOnAll
(并行计算工具箱)|毕竟
|afterEach
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。