send
使用数据队列将数据从工作进程发送到客户端
说明
send(
将值为 pollablequeue
, data
)data
的消息或数据发送到 pollablequeue
指定的 parallel.pool.PollableDataQueue
。使用 poll
(pollablequeue)
检索结果,并返回 data
作为答案。
结合使用 send
和 poll
函数,使用可轮询数据队列来传输和检索来自不同工作进程的消息或数据。
示例
在 parfor
循环中发送消息,并在队列中分发该消息
构造一个 DataQueue
,并调用 afterEach
。
q = parallel.pool.DataQueue; afterEach(q, @disp);
parfor
循环,并发送消息。待处理的消息被传递给 afterEach
函数,在此示例中为 @disp
。
在 parfor
循环中发送消息,并轮询结果
构造一个 PollableDataQueue
。
p = parallel.pool.PollableDataQueue;
parfor
循环,并发送一条消息,例如值为 1 的数据。 parfor i = 1 send(p, i); end
使用 Data Queue
构建一个简单的 parfor
等待栏
此示例显示创建 parfor
等待栏的函数。创建一个 DataQueue
,并使用 afterEach
指定队列每次接收数据时执行的函数。此示例调用更新等待栏的子函数。
创建一个 parfor
循环来执行 MATLAB® 中计算要求高的任务。使用 send
在 parfor
循环的每次迭代中发送一些虚拟数据。当队列接收到数据后,afterEach
在客户端 MATLAB 中调用 nUpdateWaitbar
,可以观察到等待条进度。
function a = parforWaitbar D = parallel.pool.DataQueue; h = waitbar(0, 'Please wait ...'); afterEach(D, @nUpdateWaitbar); N = 200; p = 1; parfor i = 1:N a(i) = max(abs(eig(rand(400)))); send(D, i); end function nUpdateWaitbar(~) waitbar(p/N, h); p = p + 1; end end
输入参数
queue
— 数据队列
parallel.pool.DataQueue
数据队列,指定为 parallel.pool.DataQueue
对象。
示例: q = parallel.pool.DataQueue;
data
— 消息或数据
标量 | 向量 | 矩阵 | 数组 | 字符串 | 字符向量 | 可序列化的对象
来自工作进程到数据队列的消息或数据,指定为任何可以序列化的数据类型。
示例: send(queue, data);
pollablequeue
— 可轮询数据队列
parallel.pool.PollableDataQueue
可轮询数据队列,指定为 parallel.pool.PollableDataQueue
对象。
示例: p = parallel.pool.PollableDataQueue;
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
该函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2017a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)