Python Dask 并行运行 Bag 操作

标签 python json python-3.x parallel-processing dask

我正在尝试使用 Dask 和 read_text 对 json 文件运行一系列操作,但我发现当我检查 Linux Systems Monitor 时,只有一个核心以 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()

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

谢谢。

最佳答案

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

>>> js.npartitions
1

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

>>> js = db.read_text(..., blocksize=1e6)...  # 1MB chunks

关于Python Dask 并行运行 Bag 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626208/

相关文章:

Python - 从具有多个类别的 csv 文件制作字典

python - 根据来自另一列 pandas 的相同或更接近的值替换列中的值

python - 防止在 python 异步 http 请求中下载响应主体

json - log4net.ext.json : ERROR Failed to find type [log4net. 布局.SerializedLayout,log4net.Ext.Json]

javascript - 如何在 azure 中托管 json-server

python - 在 numpy 中混合数组的最快方法?

java - 斯卡拉/Play : parse JSON into Map instead of JsObject

python - 如何计算列表列表并返回 float 列表

python - 有时,map 是一个序列,有时不是?

javascript - 未捕获的类型错误 : Cannot read property 'init' of undefined in Javascript while submitting form