[python]dask模块_单机环境_集群环境

151 阅读2分钟

yiyan.baidu.com/chat/MjEzMT…

使用 Dask 模块进行 Python 开发时,并不严格要求在集群环境中运行。

Dask 可以在单机(单节点)环境中运行,也可以扩展到集群(多节点)环境中运行,这使得它非常灵活。 单机环境

在单机环境中,Dask 仍然可以利用多核 CPU 和多线程/多进程来并行化计算任务。

你可以通过以下方式在单机上运行 Dask:

本地线程调度器:使用 dask.distributed.Client(scheduler='threads') 或 dask.distributed.LocalCluster()。

本地进程调度器:使用 dask.distributed.Client(scheduler='processes') 或 dask.distributed.LocalCluster(scheduler='processes')。

以下是一个简单的示例,展示如何在单机环境中使用 Dask:


import dask.array as da
from dask.distributed import Client, LocalCluster
 
# 创建一个本地进程调度器
cluster = LocalCluster(n_workers=4, threads_per_worker=2)
client = Client(cluster)
 
# 创建一个大的数组
x = da.random.random((1000, 1000), chunks=(100, 100))
 
# 对数组进行一些计算,比如计算均值
y = x.mean().compute()
 
print(f"Mean of the array: {y}")
 
# 关闭客户端和集群
client.close()

cluster.close()

在这个例子中,我们创建了一个本地集群,指定了 4 个工作进程,每个进程有 2 个线程。

然后我们创建了一个大的 Dask 数组,并计算了它的均值。

集群环境

在集群环境中,Dask 可以利用多个节点的资源,

通过分布式调度器(如 dask.distributed.Client(scheduler='distributed://hostname:port'))来协调计算任务。

这通常涉及在多个节点上运行 Dask worker 进程,并配置一个中心调度器来管理这些 worker。 示例代码(集群环境)

在集群环境中,你通常会在一个节点上启动调度器,并在其他节点上启动 worker。以下是一个简单的配置示例:

启动调度器:

dask-scheduler --port 8786 --bokeh --bokeh-port 8787

在多个节点上启动 worker:

dask-worker tcp://<scheduler-hostname>:8786 --nthreads 2 --nprocs 4

    在客户端代码中连接到调度器:

from dask.distributed import Client
 
client = Client('tcp://<scheduler-hostname>:8786')
 
# 接下来的代码与单机环境中的代码类似
x = da.random.random((1000, 1000), chunks=(100, 100))
y = x.mean().compute()
 
print(f"Mean of the array: {y}")
 

client.close()

总结

Dask 可以在单机和集群环境中运行,这使得它非常灵活,可以根据你的计算需求进行扩展。

在单机环境中,Dask 可以利用多核 CPU 和多线程/多进程来加速计算;

在集群环境中,Dask 可以跨多个节点进行分布式计算。