我有以下函数,可以将一组正则表达式应用于数据框中的每个元素。我要对的数据框是一个5MB的分块。
def apply_all_regexes(data, regexes):
# find all regex matches is applied to the pandas' dataframe
new_df = data.applymap(
partial(apply_re_to_cell, regexes))
return regex_applied
def apply_re_to_cell(regexes, cell):
cell = str(cell)
regex_matches = []
for regex in regexes:
regex_matches.extend(re.findall(regex, cell))
return regex_matches
由于applymap
的串行执行,处理所需时间为 ~ 元素数 * (1个元素的正则表达式的串行执行)
。有没有办法调用并行处理?我尝试使用ProcessPoolExecutor
,但似乎比串行执行需要更长时间。