How can I check programmatically whether an existing parallel pool is thread-based or process-based?

2 件のコメント

Raymond Norris
Raymond Norris 2025 年 8 月 11 日
@Matthias Wurm I'm currious why this would matter?
Matthias Wurm
Matthias Wurm 2025 年 8 月 11 日
Some of my functions use the thread-based pool, others the process-based pool. When running a function and the wrong pool already exists, I would like to end it and create the correct one.

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

 採用された回答

Meg Noah
Meg Noah 2025 年 8 月 8 日

3 投票

delete(gcp('nocreate'))
pool = parpool('Threads')
Starting parallel pool (parpool) using the 'Threads' profile ... Connected to parallel pool with 8 workers.
pool =
ThreadPool with properties: NumWorkers: 8 Busy: false FileStore: [1x1 parallel.FileStore] ValueStore: [1x1 parallel.ValueStore]
class(pool)
ans = 'parallel.ThreadPool'
% test of whether or not pool is a thread parallel pool
contains(class(pool), 'parallel.ThreadPool')
ans = logical
1
opts = parforOptions(pool)
opts =
PoolOptions with properties: RangePartitionMethod: 'auto' Pool: [1×1 parallel.ThreadPool] MaxNumWorkers: 8
class(opts.Pool)
ans = 'parallel.ThreadPool'
% test for whether or not pool is a Thread pool
contains(class(opts.Pool), 'parallel.ThreadPool')
ans = logical
1
% check to see if the same methods in pool are inherited from ThreadPool
methods(pool)
Methods for class parallel.ThreadPool: addAttachedFiles parfeval partition tocBytes listAutoAttachedFiles parfevalOnAll ticBytes updateAttachedFiles Call "methods('handle')" for methods of parallel.ThreadPool inherited from handle.

1 件のコメント

Matthias Wurm
Matthias Wurm 2025 年 8 月 8 日
Thank you! I was not aware of the "class()" function.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Parallel Computing Fundamentals についてさらに検索

製品

リリース

R2024b

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by