Main Content

backgroundPool

バックグラウンドでコードを実行するための環境

R2021b 以降

    説明

    バックグラウンド プールを使用してバックグラウンドでコードを実行します。バックグラウンドでコードを実行すると、MATLAB® セッションで他のコードを同時に実行できます。

    作成

    説明

    p = backgroundPool はバックグラウンド プールを返します。

    プロパティ

    すべて展開する

    この プロパティ は読み取り専用です。

    バックグラウンド プールで実行する FevalFuture オブジェクトのキュー。FevalQueue オブジェクトとして指定します。このプロパティを使用して、並列プールの保留中および実行中の future 変数を確認できます。future 変数を作成するには、parfeval (Parallel Computing Toolbox) および parfevalOnAll (Parallel Computing Toolbox) を使用します。future 変数の詳細については、Future を参照してください。

    データ型: FevalQueue

    この プロパティ は読み取り専用です。

    ワーカーの数。正の整数スカラーとして指定します。

    • Parallel Computing Toolbox™ のライセンスがない場合、値は 1 です。

    • Parallel Computing Toolbox のライセンスがある場合、NumWorkers は所有している物理コア数と同じです。たとえば、物理コアが 4 個のマシンで MATLAB を実行する場合、値は 4 です。backgroundPool を初めて使用する前に maxNumCompThreads を使用してこの値を減らすことができます。

    この プロパティ は読み取り専用です。

    バックグラウンド プールがビジーかどうかを示すフラグ。true または false として指定します。プールで完了する必要がある未処理の作業がある場合、プールはビジーです。

    オブジェクト関数

    parfevalバックグラウンドでの関数の実行
    parfevalOnAll (Parallel Computing Toolbox)並列プールのすべてのワーカーで関数を非同期実行

    すべて折りたたむ

    この例では、parfeval および backgroundPool を使用してバックグラウンドで関数を実行する方法を示します。バックグラウンドで関数を実行すると、他の MATLAB® コードを同時に実行できます。

    parfeval を使用して関数 magic(3) を実行し、単一の出力を取得します。最初の引数として backgroundPool を指定して、関数をバックグラウンドで実行します。parfeval を使用すると、Future オブジェクトが作成されます。

    f = parfeval(backgroundPool,@magic,1,3);

    バックグラウンドから出力を取得するには、fetchOutputs を使用します。magic の実行が完了すると、MATLAB は出力を返します。

    fetchOutputs(f)
    ans = 3×3
    
         8     1     6
         3     5     7
         4     9     2
    
    

    この例では、バックグラウンドで Amazon® S3 バケットからイメージを読み取る方法を示します。

    イメージ データストアを使用してバケットに接続します。S3 バケットへのアクセスをセットアップする方法の詳細については、リモート データの操作を参照してください。

    "s3://MyBucket/data" は、S3 バケット内のデータ フォルダーの URL に置き換えてください。

    ds = imageDatastore("s3://MyBucket/data");

    parfeval を使用して S3 バケットからデータを読み取ります。最初の引数として backgroundPool を指定して、関数をバックグラウンドで実行します。次に、データストアからすべてのデータを読み取ります。

    f = parfeval(backgroundPool,@readall,1,ds);

    S3 バケットからデータをダウンロードしている間、他の関数を実行できます。バックグラウンドからすべてのイメージを取得するには、fetchOutputs を使用します。readall の実行が完了すると、MATLAB は出力を返します。

    T = fetchOutputs(f);
    imout = imtile(T);
    imshow(imout)

    制限

    • parpool(‘Threads’)backgroundPool を使用して作成されたプールはいずれも、同じリソースを利用するスレッド ベースのプールです。一方のプールでのアクティビティが他方のプールでのアクティビティをブロックしたり、他方のプールでのアクティビティによってブロックされたりすることがあります。また、永続データおよび乱数発生ストリーム状態はこれらのプール間で共有されます。乱数ストリームの制御の詳細については、ワーカー上の乱数ストリームの制御 (Parallel Computing Toolbox)を参照してください。

    拡張機能

    バージョン履歴

    R2021b で導入