我正在为经济目的开发一个模型。我有整个S&P 500组件在一个文件夹中,存储了许多.hdf文件。每个.hdf文件都有自己的多个索引(年-周-分钟)。
顺序代码(非并行化)的示例:
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)
此外,在Dask文档“用例”中,它们表明:
程序员有一个函数,他们想在不同的输入上运行很多次。它们的函数和输入可能在内部使用数组或数据,但从概念上讲,它们的问题不是一个大数组或数据。 他们想在他们的笔记本电脑上并行运行这些功能,而他们的原型,但他们也打算最终使用内部集群。它们将其功能封装在dask.delayed中,并让适当的dask调度程序并行化和负载平衡工作。
所以我肯定我错过了什么,或者可能不仅仅是一些东西。用multiprocessing.pool和dask.multiprocessing处理多只大熊猫的数据有什么区别?
你觉得我应该用达斯克来处理我的具体案子吗?谢谢你们。
发布于 2017-10-15 12:50:00
没有什么不同。达斯克就是在做你在你的自定义代码中所做的事情。它使用熊猫和线程或多处理池进行并行处理。
你可能会因为几个原因而喜欢达斯克
但如果你所拥有的对你有用,那么我就留在那里。
https://stackoverflow.com/questions/46754524
复制相似问题