テキストファイルを入力として受け取り、何らかの処理を行い、結果をファイルに書き出す関数があります。私は複数のファイルにまたがってこれを並行して実行しようとしています。ファイルの処理順序は重要ではなく、それぞれの処理は完全に独立しています。ここで私は今持っているものです。Pythonで出力を書き込む並列関数の適切な処理
今import mulitprocessing as mp
import pandas as pd
from glob import glob
def processor(fi):
df = pd.read_table(fi)
...do some processing to the df....
filename = fi.split('/')[-1][:-4]
df.to_pickle('{}.pkl'.format(filename))
if __name__ == '__main__':
files = glob('/path/to/my/files/*.txt')
pool = mp.Pool(8)
for _ in pool.imap_unordered(processor, files):
pass
、これは実際に私の知る限り、完全に正常に動作しますが、構文は本当にhinkyようで、それについて行くのより良い方法がある場合、私は思ったんだけど。例えば。明示的なループを実行しなくても同じ結果が得られますか?
私はmap_async(processor, files)
を試しましたが、出力ファイルは生成されません(ただし、エラーは発生しません)。
提案?
'print'文を追加して、' map_async'を試したときに実際に実行されていることを確認しましたか? –