Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

parfeval

バックグラウンドでの関数の実行

    説明

    F = parfeval(backgroundPool,fcn,n,X1,...,Xm) は、関数 fcn がバックグラウンドで実行されるようにスケジュールします。MATLAB® が関数 fcn を実行している間、他のコードを実行できます。

    並列プールで関数を実行する場合は、parfeval (Parallel Computing Toolbox) を参照してください。

    parfeval はバックグラウンド ワーカーで関数 fcn を実行します。ワーカーおよびバックグラウンドの詳細については、バックグラウンド ワーカーを参照してください。

    MATLAB は関数 fcn を非同期的に [Y1,...,Yn] = fcn(X1,...,Xm) として評価します (m 個の入力と n 個の出力)。

    MATLAB は、関数 fcn の実行が完了する前に Future オブジェクト F を返します。fetchOutputs を使用して future から結果 [Y1,...,Yn] を取得できます。関数 fcn の実行を停止するには、関数 cancel を使用します。future の詳細については、Future を参照してください。

    F = parfeval(fcn,n,X1,...,Xm) は関数 fcn の実行をスケジュールします。

    MATLAB は、関数 fcn の実行が完了する前に Future オブジェクト F を返します。

    この構文を使用して、Parallel Computing Toolbox™ で使用するために設計されたコードを実行します。

    • Parallel Computing Toolbox がない場合、並列リソースを使用しません。関数は逐次実行されます。

    • Parallel Computing Toolbox がある場合、parfeval は並列リソースを自動的に使用します。

    すべて折りたたむ

    この例では、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
    
    

    この例では、バックグラウンドで実行されている MATLAB 関数を停止する方法を示します。parfeval を使用してバックグラウンドで関数を実行すると、MATLAB は即時に Future オブジェクトを返します。長時間実行されている関数が原因で、他の関数をバックグラウンドで実行できなくなることがあります。関数の実行を停止するには、[ライブ エディター]、[実行]、[停止] を選択するのではなく、関数 cancel を使用する必要があります。

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

    f = parfeval(backgroundPool,@pause,0,Inf);

    Future オブジェクトの状態を確認します。

    f.State
    ans = 
    'running'
    

    parfeval を実行すると、関数はバックグラウンドで実行されるようにスケジュールされます。バックグラウンド プールのリソースが関数を実行するには不足している場合、Future'queued' 状態になります。関数がバックグラウンド プールで実行されると、Future'running' 状態になります。

    関数のバックグラウンドでの実行を停止するには、Future オブジェクトをキャンセルします。

    cancel(f)
    f.State
    ans = 
    'finished'
    

    関数は 'finished' 状態になりました。

    入力引数

    すべて折りたたむ

    実行対象の関数。関数ハンドルとして指定します。

    例: fcn = @magic

    出力引数の数。非負の整数スカラーとして指定します。

    n は、fcn(X1,...,Xm) の実行で予期される出力引数の数です。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    入力引数。変数または式のコンマ区切りリストとして指定します。

    出力引数

    すべて折りたたむ

    出力 Futureparallel.Future オブジェクトとして返されます。

    拡張機能