dask计算不是并行执行的

问题描述 投票:7回答:1

我有一个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%的一个核心。我对文档的理解是这段代码并行执行。为什么不呢?我误解了什么吗?

python concurrency python-multiprocessing dask castra
1个回答
6
投票

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

你可以在全球范围内这样做

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

或者只是在to_castra电话上这样做

df.to_castra("data.castra", scheduler='multiprocessing')

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

© www.soinside.com 2019 - 2024. All rights reserved.