Daskワーカーは、タスクの起動に使用する単一のスレッドプールを維持します。各タスクは常にこのプールから1つのスレッドを消費します。このプールから多くのスレッドを取得するようにタスクに指示することはできません。
しかし、daskワーカー内で並行性を制御および制限する他の方法があります。あなたの場合、worker resourcesを定義することを検討するかもしれません。これにより、多くの大きなタスクが同じワーカーで同時に実行されるのを防ぐことができます。
以下の例では、各ワーカーが1つのFoo
リソースを持ち、各タスクが実行するには1つずつFoo
が必要であると定義しています。これにより、2つのタスクが同じワーカーで同時に実行されなくなります。
dask-worker scheduler-address:8786 --resources Foo=1
dask-worker scheduler-address:8786 --resources Foo=1
。
from dask.distributed import Client
client = Client('scheduler-address:8786')
futures = client.map(my_expensive_function, ..., resources={'Foo': 1})