在没有 > client = Client() 的情况下使用 dask
using dask without > client = Client()
关于天。
我想将 parquet 文件读取为 df 和 运行 groupby 函数
我的问题是为什么我要 运行 这个代码之前?
from dask.distributed import Client, progress
client = Client()
client
不只是
import dask.dataframe as dd
df = dd.read_parquet(r'C:\Users\ggg\mis_1.parquet')
g=df.groupby('id')['id'].count().compute()
对我来说,没有客户端效果更好
您应该阅读此页面比较调度程序:https://docs.dask.org/en/stable/scheduler-overview.html
如果您没有 client
,您将使用默认调度程序进行操作,这将是数据帧操作的线程调度程序。如果它非常 low-overhead,并且通过在一个进程中对相同的内存进行 charing space 来避免内存复制。但是,它并不那么聪明,并且对于 GIL-holding 函数来说效果很差。如果它对你有用,请使用它!
分布式调度程序提供了更多选项。您可以选择 thread/process 组合,甚至拥有所有调度程序和线程 in-process(其性能应该与简单的线程调度程序一样好。此外,它通过以下方式提供了对内存管理和诊断的更多控制仪表板。当然,如果您确实需要将计算分布在多台计算机上,这是您唯一的选择。此选项 通常 是更好的选择,因此通常建议这样做。但是,Client()
仅提供默认选项,可能不是可选的。
我试图检查它,所以我 运行 在 1 亿行 table 上有很多函数 + compute()。有客户端(+选项)和没有。
我没有发现 运行 更好地使用 Client() 的任何功能。
不仅如此,在某些情况下,在 Client() 之后我无法做以前工作良好的事情。
我 运行 代码在我自己的笔记本电脑上而不是在云端,也许这就是原因...
关于天。
我想将 parquet 文件读取为 df 和 运行 groupby 函数
我的问题是为什么我要 运行 这个代码之前?
from dask.distributed import Client, progress
client = Client()
client
不只是
import dask.dataframe as dd
df = dd.read_parquet(r'C:\Users\ggg\mis_1.parquet')
g=df.groupby('id')['id'].count().compute()
对我来说,没有客户端效果更好
您应该阅读此页面比较调度程序:https://docs.dask.org/en/stable/scheduler-overview.html
如果您没有 client
,您将使用默认调度程序进行操作,这将是数据帧操作的线程调度程序。如果它非常 low-overhead,并且通过在一个进程中对相同的内存进行 charing space 来避免内存复制。但是,它并不那么聪明,并且对于 GIL-holding 函数来说效果很差。如果它对你有用,请使用它!
分布式调度程序提供了更多选项。您可以选择 thread/process 组合,甚至拥有所有调度程序和线程 in-process(其性能应该与简单的线程调度程序一样好。此外,它通过以下方式提供了对内存管理和诊断的更多控制仪表板。当然,如果您确实需要将计算分布在多台计算机上,这是您唯一的选择。此选项 通常 是更好的选择,因此通常建议这样做。但是,Client()
仅提供默认选项,可能不是可选的。
我试图检查它,所以我 运行 在 1 亿行 table 上有很多函数 + compute()。有客户端(+选项)和没有。
我没有发现 运行 更好地使用 Client() 的任何功能。 不仅如此,在某些情况下,在 Client() 之后我无法做以前工作良好的事情。
我 运行 代码在我自己的笔记本电脑上而不是在云端,也许这就是原因...