2016-05-13 8 views
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の戻り値があります。関数内で計算された整数です。文書コーパス)。誰かが問題を見つけられるのであれば、私は感謝しています。

答えて

0

私の機能では、マルチプロセスプールによって呼び出されたエラーがあるため、エラー情報が表示されなくなりました。

関連する問題