parfeval with fetch not working

5 ビュー (過去 30 日間)
HILTON MARQUES SANTANA
HILTON MARQUES SANTANA 2022 年 7 月 12 日
編集済み: HILTON MARQUES SANTANA 2022 年 7 月 14 日
Hello guys. When I call the fetch() function with parfeval, I get the following error:
parfeval(@fetch,1,database,query)
Error: 'Dot indexing is not supported for variables of this type.'
On the other hand, without parfeval, the function works perfectly. What could it be?

採用された回答

Edric Ellis
Edric Ellis 2022 年 7 月 13 日
You cannot pass database connection objects to workers directly like this. You should use createConnectionForPool . There are examples on that doc page that show you how to set up and use this. You'll end up with something like this:
c = createConnectionForPool(..);
% Wrap the call to "fetch" to unpick the .Value out of the pool connection
% object 'c'.
fut = parfeval(@(c, varargin) fetch(c.Value, varargin{:}), 1, c, query)
  1 件のコメント
HILTON MARQUES SANTANA
HILTON MARQUES SANTANA 2022 年 7 月 14 日
編集済み: HILTON MARQUES SANTANA 2022 年 7 月 14 日
Thanks! It's working. Just another question. I am trying to speed up some queries on a online database on this way:
f = parfeval(@(c, varargin) fetch(c.Value, varargin{:}), 1, c, query1);
f(end+1) = parfeval(@(c, varargin) fetch(c.Value, varargin{:}), 1, c, query2);
f(end+1) = parfeval(@(c, varargin) fetch(c.Value, varargin{:}), 1, c, query3);
res1 = fetchOutputs(f(1));
res2 = fetchOutputs(f(3));
res3 = fetchOutputs(f(2));
But the time is not decreasing too much. There is a more efficient approach?
Thanks in advance

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by