dask计算不是并行执行的

时间:2016-02-19 22:31:27

标签: python concurrency python-multiprocessing dask castra

我有一个json文件目录,我试图转换为dask DataFrame并将其保存到castra。 有200个文件,它们之间包含O(10 ** 7)个json记录。 代码非常简单,主要遵循教程示例。

import dask.dataframe as dd
import dask.bag as db
import json
txt = db.from_filenames('part-*.json')
js = txt.map(json.loads)
df = js.to_dataframe()
cs=df.to_castra("data.castra")

我在32核机器上运行它,但代码只使用100%的一个核心。 我对文档的理解是这段代码并行执行。 为什么不呢? 我误解了什么吗?

1 个答案:

答案 0 :(得分:6)

你的最终集合是一个dask数据框,默认使用线程,你必须明确告诉dask使用进程。

您可以全局执行此操作

import dask
dask.config.set(scheduler='multiprocessing')

或者仅在to_castra电话

上执行此操作
df.to_castra("data.castra", scheduler='multiprocessing')

另外,作为一个警告,Castra主要是一个实验。它速度相当快,但也不像HDF5或Parquet那样成熟。