Python多处理池工作进程无法终止

时间:2017-09-05 17:59:37

标签: python linux python-2.7 jupyter-notebook python-multiprocessing

我使用Python的multiprocesssing.Pool.map()在Jupyter笔记本中对一堆数据执行一个函数。我从池中获得了正确和预期的结果,但是即使我执行了Pool.close(),Pool.join()和Pool.terminate()之后工作进程也拒绝终止,我只是无法弄清楚为什么。

以下是我创建池并在我的数据上调用map()函数的代码片段:

   for i in xrange(num_batches):
        lw_range = int(i * self.batch_size)
        up_range = int((i + 1) * self.batch_size)

        # Put the remainder into the last batch
        if remainder_size > 0 and i == (self.num_proc - 1):
            up_range += int(remainder_size)

        subset_df = self.tr_df[lw_range:up_range]
        arg_list.append((subset_df, self.dates_v, self.sec_list, self.dict_mode, universe_m, speaker_type, section,  \
                         corprep_type, aggregation))

    sub_sent_matrices = mp_pool.map(_gen_sentiments_worker, arg_list)

    print "Multiprocessing pool completed!...",

    mp_pool.close()
    mp_pool.join()
    mp_pool.terminate()

以下是我与map()并行调用的函数。基本上它实例化一个对象,该对象解析一些文本并将结果作为一个numpy数组/矩阵返回:

def _gen_sentiments_worker((tr_df, dates_v, sec_list, dict_mode, 
     universe_m, speaker_type, section, corprep_type, aggregation)):

     tr_nlp_instance = TranscriptNLP(tr_df, dates_v, sec_list, 
     dict_mode=dict_mode)

     sub_sent_m = tr_nlp_instance.gen_sentiments_matrix(universe_m, 
     section, speaker_type, corprep_type, aggregation)

     return sub_sent_m

我不确定这是否是由于多处理错误处理.Pool()或与Jupyter笔记本的一些奇怪的冲突。有没有人遇到并成功解决过这样的问题?

谢谢!

0 个答案:

没有答案