0
私は大規模な学術文書で機能選択のためのプログラムを実装しています。最初のステップは、各ファイルを読み込み、グラムを生成し、事前計算を行うことです。私はmultiprocessing.poolを使ってプログラムをより速く走らせました。Python3の多重処理ジョインは待機できません
#number of process
processNum = 4
pool_precompute = mp.Pool(processes = processNum)
fileNum = len(filelist)
offset = fileNum // processNum
ProcessList = []
for i in range(processNum):
if (i == processNum - 1):
start = i * offset
end = fileNum
else:
start = i * offset
end = start + offset
#call the function
print (start, end, i)
ProcessList.append(pool_precompute.apply_async(get_kgrams_df_pmi, args = (start, end, filelist, i)))
#pool_precompute.apply_async(get_kgrams_df_pmi, args = (start, end, filelist, i))
pool_precompute.close()
pool_precompute.join()
私のプログラムは、作成したすべてのプロセスが完了するのを待ってから、次の手順に進む必要があります。しかし、私はjoin()を使っていましたが、私のプログラムはまったく動かないので、join()関数は何の効果もないようです。各プロセスはある量のファイルを処理し、互いに通信する必要はなく、変数を共有しない、get_kgrams_df_pmiの戻り値があります。関数内で計算された整数です。文書コーパス)。誰かが問題を見つけられるのであれば、私は感謝しています。