sách gpt4 ai đã đi

python - 本地使用 dask : to Client() or not to Client()?

In lại 作者:太空宇宙 更新时间:2023-11-03 15:44:50 30 4
mua khóa gpt4 Nike

我想了解 Dask 在本地机器上的使用模式。

具体而言,

  • 我有一个适合内存的数据集
  • 我想做一些 pandas 操作
    • 分组依据...
    • 日期解析
    • vân vân.

Pandas 通过单核执行这些操作,这些操作对我来说要花费数小时。我的机器上有 8 个内核,因此,我想使用 Dask 尽可能地并行化这些操作。

我的问题如下:在 Dask 中执行此操作的两种方式有什么区别:

nhập pandas dưới dạng pd
from sklearn.datasets import load_iris

iris = load_iris()

(1)

import dask.dataframe as dd

df = dd.from_pandas(
pd.DataFrame(iris.data, columns=iris.feature_names),
npartitions=2
)

df.mean().compute()

(2)

import dask.dataframe as dd
from distributed import Client

client = Client()

df = client.persist(
dd.from_pandas(
pd.DataFrame(iris.data, columns=iris.feature_names),
npartitions=2
)
)

df.mean().compute()

一种使用模式相对于另一种使用模式有何优势?为什么我应该使用一个而不是另一个?

1 Câu trả lời

版本 (2) 与版本 (1) 相比有两个不同之处:选择使用分布式调度程序,以及 persist。这些是不同的因素。有很多关于两者的文档:https://distributed.readthedocs.io/en/latest/quickstart.html , http://dask.pydata.org/en/latest/dataframe-performance.html#persist-intelligently ,所以这个答案可以保持简短。

1) 分布式调度器比以前的线程和多进程调度器更新、更智能。顾名思义,它既可以使用集群,也可以在单机上工作。虽然调用 .compute() 时的延迟通常较高,但在许多方面它更高效,具有更高级的功能(例如实时动态编程)和更多诊断功能(例如仪表板)。使用Client()创建时,默认获得与核心数相等的进程数,但您可以选择进程数和线程数,接近原始的只有线程的情况使用 Client(processes=False).

2) 持久化意味着评估计算并将其存储在内存中,以便进一步的计算更快。您也可以在没有分布式客户端 (dask.persist) 的情况下进行持久化。它有效地提供了以内存换取性能的交易,因为您不需要每次将它用于任何依赖于它的计算时都重新评估计算。如果您继续在中间体上仅执行一次计算,如示例中所示,它应该不会对性能产生影响。

关于python - 本地使用 dask : to Client() or not to Client()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614761/

30 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com