无法并行化熊猫使用更快的应用程序



我正在尝试通过将每个单词通过时间复杂的自定义过程来更正文档中的OCR解析单词。该过程是我的自定义业务功能,它确实查看了单词的各种语义。

我正在尝试使用更快的速度来加快该过程。我有一个 16 核处理器,我没有看到所有内核都在使用,因为我看到只有 1 个内核消耗 100%,其余 15 个空闲。我错过了什么?

我尝试了如下所示的不同选项,但没有成功。有人可以指出我在这里缺少什么吗?df 是一个数据帧,每行包含一个单词。correct_ocr_string 是一个业务函数,它将字符串作为输入,运行自定义 ML 模型并返回字符串。

df['Corrected'] = df.OCR.swifter .progress_bar(False).apply(lambda x: correct_ocr_string(x))
df['Corrected'] = df.OCR.swifter .progress_bar(False).apply(correct_ocr_string)
v_fnc = np.vectorize(correct_ocr_string)
df['Corrected'] = df.OCR.swifter .progress_bar(False).apply(v_fnc)

我也尝试了pandarallel.parallel_apply但没有成功

from pandarallel import pandarallel
pandarallel.initialize(nb_workers=multiprocessing.cpu_count())
df['Corrected'] = df.OCR.parallel_apply(correct_ocr_string)

你必须使用allow_dask_on_strings(enable=True(

df.OCR.swifter.allow_dask_on_strings(enable=True).apply(correct_ocr_string)

您是否可以使用Jupyter Notebook?多处理可能会导致那里的问题(更快和潘达拉尔(。

最新更新