在parfeval下运行的函数的限制

17次观看(过去30天)
我才明白 parfeval R2021b允许运行并行功能(在后台),即使没有并行工具箱,这是一个伟大的特性。
然而,当我使用它时,屏幕输出显示/绘图似乎没有做什么,如本脚本所示。
我的问题是,是否有一个文档列出了在这样的并行线程中运行时不活跃的函数?
脚本栏。m将在R2021b下运行
以正常方式运行函数foo
res = foo (10)
%在后台运行函数foo
f = parfeval(backgroundPool,@foo,1,10);
流('等待后台函数foo完成…'
真正的
如果比较字符串(f。状态,“完成”
打破
结束
暂停(0.1);
结束
流(' \ n ');
res = fetchOutputs (f)
函数Res = foo(n)
Res = 0;
i = 1: n
Res = Res + i;
流(“% d \ n”,我);当foo在后台运行时,这个语句什么也不做
暂停(1);
结束
结束
> >栏
1
2
3.
4
5
6
7
8
9
10
res =
55
等待后台函数foo完成…
res =
55

接受的答案

雷蒙德·诺里斯
雷蒙德·诺里斯 2021年9月24日
也不是不活动/不工作 backgroundPool 不捕捉“日记”的 parfeval .这与线程池具有相同的行为
F = parfeval(parpool)“线程”), @foo 1 10);
它具有与进程池类似的行为
F = parfeval(parpool)“本地”), @foo 1 10);
只有一个例外。对于进程池,在while循环中可以添加调用
f.Diary
它不会完全按照你想要的那样做——它每次都会打印整个日记。例如
ans =
1
2
3.
4
5
6
7
8
9
ans =
1
2
3.
4
5
6
7
8
9
10
但按你的意思,如果不打电话
f = parfeval(backgroundPool,@foo,1,10);
你打电话给
parforI = 1:1
Res = foo(10);
结束
你会看到 语句。我将与开发检查,但它将显示为思想屏幕I/O将是门控功能。
3评论
布鲁诺陈德良
布鲁诺陈德良 2021年9月25日
编辑:布鲁诺陈德良 2021年9月27日
“你想让你的日记与for循环穿插在一起吗(假设这甚至可能发生——我只是演示了一堆在foo运行时使用显示运行的代码)?”
老实说,如果我是设计师,我更喜欢在后台函数中自由使用或不使用printf(非阻塞函数)。我不期望管理器干涉和阻止屏幕输出。我可以处理把屏幕弄乱或不乱,这比没有实现某件事的可能性要容易。

登录发表评论。

更多答案(0)

类别

找到更多资料并行计算基础帮助中心而且文件交换

标签

下载188bet金宝搏

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!