ディレクトリツリーを介したマルチプロセッシングが期待どおりに動作しません。私はすべてiso
ファイルを単一のset()
に追加しようとしており、そのセットだけを出力します。私はNone
を返すようにPythonに指示していることを知っていますが、他に返すことなしにこれを行う方法がわかりませんNone
。マルチプロセッシングから特異セットを出力するにはどうすればよいですか?今のようファイルツリーを介したマルチプロセッシングで期待される出力が出力されない
import itertools
import multiprocessing
def worker(filename):
data_set = set()
if ".iso" in filename:
data_set.add(filename)
return data_set if len(data_set) != 0 else None
def search_for_iso(dirname=None, verbose=False, default_path="/"):
iso_found = set()
if dirname is None:
pool = multiprocessing.Pool(processes=48)
walker = os.walk(default_path)
file_data_gen = itertools.chain.from_iterable((
os.path.join(root, f) for f in files) for root, sub, files in walker)
results = pool.map(worker, file_data_gen)
return results
それが出力されます以下:set(['/test.iso', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, .....]) # whole lot of None's
予想される出力:set(['/test.iso'])