私のdaskプログラムが出力を生成しない理由について混乱しています。送信後に単にハングします。スレッドの代わりにプロセスを使用するように指定し、送信時にすべてのコアが起動するのを確認できるため (ここで提案されているように: dask 計算が並列で実行されていません)、計算しているように見えますが、決して終了しません。長いテキスト ファイルのリストに対して単純な正規表現を実行しようとしています。明らかな何かが欠けていますか?
import re
from os import listdir
import dask.bag as db
import dask.multiprocessing
dask.set_options(get=dask.multiprocessing.get)
loc = 'D:\\...\\text_files\\'
txts = [loc + i for i in listdir(loc)[:10]]
# Load data in parallel
f = db.from_filenames(txts)
f = f.repartition(3)
# Define the regex
regex = re.compile(r'\b[A-Z][a-z]+\b')
# create function to parallelize
def reg(text):
return regex.findall(text)
# distribute the function over cores
output = f.map(reg).compute().concat()