我使用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笔记本的一些奇怪的冲突。有没有人遇到并成功解决过这样的问题?
谢谢!