我正在尝试使用黄昏将网络服务器上的工作分担给交互式数据分析应用程序的工作人员。对于我的应用程序典型的数据帧大小,简单的groupby()
和mean()
在dask
上的速度是内存pandas
的三倍。我了解这不是dask的目标。但是,我发现分发的dask更适合在交互式应用程序中卸载数据(与Celery的作业无法进行交互相比)。
除了进行持久化处理外,还有什么我可以做以进一步提高计算速度的方法。例如,是否可以以某种方式通知系统数据帧较小,所以最好仅在计算所依赖的持久数据所在的节点上执行它?
csv = dd.read_csv(r'path-to-csv.csv')
df = csv.persist()
# Bringing to this machine
df2 = df.compute()
def f1():
return df.groupby('Color').mean().compute()
def f2():
return df2.groupby('Color').mean()
timeit.timeit('f1()', setup='from __main__ import f1', number=100)
timeit.timeit('f2()', setup='from __main__ import f2', number=100)