我试图通过一个时间复杂的自定义过程传递每个单词来纠正文档中的OCR解析单词。这个过程是我的自定义业务功能,它可以查看单词的各种语义。
我正试图以更快的速度加快这一进程。我有一个16核心处理器,我没有看到所有的核心正在使用,因为我看到只有一个核心消耗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)发布于 2020-08-06 14:51:56
您必须使用allow_dask_on_strings(enable=True)
df.OCR.swifter.allow_dask_on_strings(enable=True).apply(correct_ocr_string)你有可能使用木星笔记本吗?多处理可能会在那里造成问题(更快和更全面)。
https://stackoverflow.com/questions/62066987
复制相似问题