cprintf not working in parallel situation

2 ビュー (過去 30 日間)
Yu Li
Yu Li 2018 年 9 月 18 日
コメント済み: Yu Li 2018 年 9 月 18 日
Hi:
I downloaded a color print function in this link:
the function works fantastically, but I found that it can not work in parallel situation.
below are the test code:
parfor i=1:1:100
cprintf('Keywords','this is a test.\n')
end
is there anyway to solve this problem?
Thanks!
Yu

採用された回答

Edric Ellis
Edric Ellis 2018 年 9 月 18 日
The way cprintf is implemented relies on manipulating the command window in a way that simply cannot be done for a parallel worker. However, you can work around this by sending the stuff to be printed back to the client, and getting it to call cprintf while the parfor loop proceeds. Use a DataQueue to acheive this:
q = parallel.pool.DataQueue;
% Set up 'q' so that it calls 'cprintf' every time it receives a message
afterEach(q, @(args) cprintf(args{:}));
parfor idx = 1:10
% instead of calling 'cprintf' directly, send the arguments
% to 'cprintf' as a cell array
send(q, {'cyan', 'iteration: %d\n', idx});
end
  1 件のコメント
Yu Li
Yu Li 2018 年 9 月 18 日
Thank you.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by