我正在实施大型学术文件中的特征选择程序。第一步是读取每个文件,生成克数并进行一些预先计算。我使用multiprocessing.pool来让程序运行得更快。这是我的这部分代码:
#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 :(得分:0)
仅仅因为多进程池调用的函数中存在错误,它们就会停止并且不会打印错误信息。