Python Dask Running Bag 并行操作

Bil*_*iam 3 python parallel-processing json python-3.x dask

我正在尝试使用 Dask 和 read_text 对 json 文件运行一系列操作,但我发现当我检查 Linux 系统监视器时,只有一个核心被 100% 使用。我如何知道我在 Dask Bag 上执行的操作是否能够并行化?这是我正在做的基本布局:

import dask.bag as db
import json

js = db.read_text('path/to/json').map(json.loads).filter(lambda d: d['field'] == 'value')
result = js.pluck('field')
result = result.map(cleantext, tbl=tbl).str.lower().remove(exclusion).str.split()
result.map(stopwords,stop=stop).compute()
Run Code Online (Sandbox Code Playgroud)

基本前提是从json文件中提取文本条目,然后进行一些清理操作。这似乎是可以并行化的,因为每段文本都可以交给处理器,因为每个文本和每个文本的清理都独立于其他文本。这是一个错误的想法吗?有什么我应该做的不同吗?

谢谢。

MRo*_*lin 5

read_text函数根据字节范围将文件分解为块。我的猜测是您的文件足够小,可以放入一个块中。您可以通过查看.npartitions属性来检查这一点。

>>> js.npartitions
1
Run Code Online (Sandbox Code Playgroud)

如果是这样,那么您可以考虑减少块大小以增加分区数

>>> js = db.read_text(..., blocksize=1e6)...  # 1MB chunks
Run Code Online (Sandbox Code Playgroud)