Main Content

cancel

バックグラウンドで実行されている関数の停止

    構文

    説明

    cancel(F) は、Future 配列 F の待機中または実行中の各要素を停止します。

    State プロパティが 'finished' でない F の各要素について、cancelState プロパティを 'finished' に設定します。キャンセルされたすべての Future の要素は、Error プロパティで実行がキャンセルされたことが示されます。

    save などの一部の関数と演算は、"Ctrl + C" を押して中断できません。それらの関数を parfeval または parfevalOnAll を使用して実行している場合、cancel でそれらの future を停止できません。delete (Parallel Computing Toolbox) を使用してプールをシャットダウンし、実行中の関数と演算を MATLAB® で強制的に停止します。

    メモ

    バックグラウンド プールで delete を使用することは推奨されません。代わりに cancelAll を使用してください。

    すべて折りたたむ

    この例では、バックグラウンドで実行されている 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' 状態になりました。

    入力引数

    すべて折りたたむ

    入力 Futureparallel.Future スカラーまたは配列として指定します。

    例: F = parfeval(backgroundPool,@magic,1,3);

    バージョン履歴

    R2013b で導入

    参考

    (Parallel Computing Toolbox) | | | | |