0
私のdaskプログラムが出力を生成しない理由は混乱しています。私はスレッドの代わりにプロセスを使用するように指定しましたが、送信時にすべてのコアが起動する(ここで示唆されているように:dask computation not executing in parallel)ので、計算されているように見えますが終了しません。私は長いテキストファイルのリストの上に単純な正規表現を実行しようとしています。私は明白な何かを欠いていますかPythonの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()
呼び出しが再パーティションするのはなぜ:あなたは、おそらく次の2行を入れ替えたいですか? – MRocklin
私は教えてください...投稿されたソースのどの部分が出力を生成するはずですか?最後の行の後に 'print output'が足りないだけではありませんか? – Alfe
PARTITION:デフォルトのパーティション方法は100です。私は3つのスレッドを利用したかったので、スレッドとパーティションをどのように位置合わせできるかを考えました。スレッド化されたパーティションをさらに作成することは理にかなっていますか?おそらくロードバランシングのハックですか?印刷:いいえ、私は印刷しようとしましたが、.compute()メソッドを呼び出してもプログラムは完了しません。 –