首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dask.multiprocessing还是熊猫+ multiprocessing.pool:有什么区别?

dask.multiprocessing还是熊猫+ multiprocessing.pool:有什么区别?
EN

Stack Overflow用户
提问于 2017-10-15 11:27:28
回答 1查看 11.7K关注 0票数 10

我正在为经济目的开发一个模型。我有整个S&P 500组件在一个文件夹中,存储了许多.hdf文件。每个.hdf文件都有自己的多个索引(年-周-分钟)。

顺序代码(非并行化)的示例:

代码语言:javascript
复制
import os
from classAsset import Asset


def model(current_period, previous_perdiod):
    # do stuff on the current period, based on stats derived from previous_period
    return results

if __name__ == '__main__':
    for hdf_file in os.listdir('data_path'):
        asset = Asset(hdf_file)
        for year in asset.data.index.get_level_values(0).unique().values:
            for week in asset.data.loc[year].index.get_level_values(0).unique().values:

                previous_period = asset.data.loc[(start):(end)].Open.values  # start and end are defined in another function
                current_period = asset.data.loc[year, week].Open.values

                model(current_period, previous_period)

为了加快处理速度,我使用multiprocessing.pool同时在多个.hdf文件上运行相同的算法,因此我对处理速度非常满意(我有一个4c/8tCPU)。但现在我发现了达斯克。

Dask文档'DataFrame概述‘中,它们表明:

可并行操作(fast)

  • 单元操作: df.x + df.y,df * df
  • 逐行选择: dfdf.x >0
  • Loc: df.loc4.0:10.5

此外,在Dask文档“用例”中,它们表明:

程序员有一个函数,他们想在不同的输入上运行很多次。它们的函数和输入可能在内部使用数组或数据,但从概念上讲,它们的问题不是一个大数组或数据。 他们想在他们的笔记本电脑上并行运行这些功能,而他们的原型,但他们也打算最终使用内部集群。它们将其功能封装在dask.delayed中,并让适当的dask调度程序并行化和负载平衡工作。

所以我肯定我错过了什么,或者可能不仅仅是一些东西。用multiprocessing.pool和dask.multiprocessing处理多只大熊猫的数据有什么区别?

你觉得我应该用达斯克来处理我的具体案子吗?谢谢你们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-15 12:50:00

没有什么不同。达斯克就是在做你在你的自定义代码中所做的事情。它使用熊猫和线程或多处理池进行并行处理。

你可能会因为几个原因而喜欢达斯克

  1. 它将解决如何自动编写并行算法。
  2. 将来您可能想要扩展到集群中。

但如果你所拥有的对你有用,那么我就留在那里。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46754524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档