主要内容

本页采用了机器翻译。点击此处可查看英文原文。

isRunning

判断泳池活动监测器是否正在运行

自 R2025a 起

    说明

    如果 ActivityMonitor 对象 monitor 正在运行并收集池活动数据,则 tf = isRunning(monitor) 返回逻辑值 1 (true)。否则,结果将是逻辑值 0 (false)。

    示例

    示例

    全部折叠

    创建一个 ActivityMonitor 对象,开始收集池监控数据。在默认设置下,如果不存在默认配置文件,parallel.pool.ActivityMonitor 会自动使用默认配置文件启动交互式并行池。

    monitor = parallel.pool.ActivityMonitor;

    运行一个 parfor 循环来生成随机数,并将它们存储在一个数组中。

    data = zeros(1,100);
    parfor idx = 1:100
        data(idx) = rand;
    end

    停止活动监控程序并获取在 parfor 执行期间收集的结果。

    monitorResults = stop(monitor);

    确定活动监视器是否正在运行并收集池监控数据。

    isRunning(monitor)
    ans = logical
       0
    
    

    重新启动活动监视器,并确认活动监视器是否正在运行。

    start(monitor);
    isRunning(monitor)
    ans = logical
       1
    
    

    如果在已监视池活动的 ActivityMonitor 对象上调用 start 函数,MATLAB ® 会丢弃之前收集的所有结果。为避免这种情况,请在 if/else 语句中使用 isRunning 函数,在调用 start 之前先检查监视器是否已运行。

    创建一个 ActivityMonitor 对象来收集监控数据,但不要立即开始收集数据。

    monitor = parallel.pool.ActivityMonitor(Start=false);

    使用 if/else 语句来判断活动监视器是否正在运行。如果程序正在运行,则执行并行代码。否则,请先启动监视器,然后再运行并行代码。

    if isRunning(monitor)
        runParallelCode;
    else
        start(monitor);
        runParallelCode;
    end

    定义一个使用 parfeval 进行并行计算的函数。

    function runParallelCode
    f(1:100) = parallel.FevalFuture;
    for idx = 1:100    
        f(idx) = parfeval(@(n) real(eig(randn(n))),1,5e2);    
    end
    maxFuture = afterEach(f,@max,1);
    wait(maxFuture);
    end

    输入参数

    全部折叠

    池活动监控程序,指定为 ActivityMonitor 对象。

    示例: monitor = parallel.pool.ActivityMonitor

    输出参量

    全部折叠

    结果为真或假,以数据类型 logical10 形式返回。

    • 如果 ActivityMonitor 对象正在运行并收集池活动数据,则该函数返回 1。若要停止收集池活动数据,请使用 stop 函数。

    • 如果 ActivityMonitor 对象未运行且未收集池活动数据,则该函数返回 0。要开始收集池活动数据,请使用 start 函数。

    数据类型: logical

    版本历史记录

    在 R2025a 中推出