Python3多处理连接不能等待

时间:2016-05-13 21:05:53

标签: python-3.x multiprocessing

我正在实施大型学术文件中的特征选择程序。第一步是读取每个文件,生成克数并进行一些预先计算。我使用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,它是一个在函数中计算的整数(字数)文件语料库)。如果有人能找到问题,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

仅仅因为多进程池调用的函数中存在错误,它们就会停止并且不会打印错误信息。