并行执行Python Dask Running Bag操作
作者:互联网
我试图使用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函数根据字节范围将文件分成多个块.我的猜测是您的文件足够小以适合一个块.您可以通过查看.npartitions属性来进行检查.
>>> js.npartitions
1
如果是这样,那么您可以考虑减小块大小以增加分区数
>>> js = db.read_text(..., blocksize=1e6)... # 1MB chunks
标签:dask,python-3-x,parallel-processing,json,python 来源: https://codeday.me/bug/20191025/1930172.html