You*_*cef 6 python cpu-cores dask-distributed
我对使用distributedpython 库非常陌生。我有 4 个工作线程,并且我已经为每个工作线程使用 14 个核心(在 16 个可用核心中)成功启动了一些并行运行,从而导致 4*14=56 个任务并行运行。
但是,如果我只想让每个工人同时执行一项任务,该怎么办?这样,我期望在工作线程上并行使用 14 个内核执行一项任务。
Dask 工作线程维护一个用于启动任务的线程池。每个任务始终消耗该池中的一个线程。您无法告诉任务从该池中获取许多线程。
但是,还有其他方法可以控制和限制 dask 工作线程中的并发性。根据您的情况,您可能会考虑定义工作人员资源。这可以让您阻止许多大型任务同时在相同的工作线程上运行。
在下面的示例中,我们定义每个工作线程都有一个Foo资源,并且每个任务都需要一个资源Foo来运行。这将阻止任何两个任务在同一工作线程上同时运行。
dask-worker scheduler-address:8786 --resources Foo=1
dask-worker scheduler-address:8786 --resources Foo=1
Run Code Online (Sandbox Code Playgroud)
。
from dask.distributed import Client
client = Client('scheduler-address:8786')
futures = client.map(my_expensive_function, ..., resources={'Foo': 1})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |