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的返回值是函数中计算的整数(字数文件语料库)。如果有人能够找出问题,我将不胜感激。