CPU 与查询的最大使用量

Maximum usage of CPU with a query

我正在尝试对最小实体执行此搜索。列表 "Titles" 大约有 5Mio。项目,它是一个列表。每个标题都将针对实体放置。

我的问题是,如何优化此搜索?我可以通过并行使用此搜索来最大限度地利用 CPU 吗?

欢迎任何提示或任何研究指南。

提前谢谢你。

    for we in titles:
        dist = stringdist.levenshtein_norm(we, ent)

        if dist < best_1:
            best_1 = dist
            best_match_1 = we

        elif dist < best_2:
            best_2 = dist
            best_match_2 = we

您最好的选择是使用 python multiprocessing 模块。使用工作池 运行 stringdist.levenshtein_norm 处理 titles 中的所有内容,并将每个函数 return (dist,ent) 作为一个元组,将其转化为 map-reduce 问题。然后取min(),既给你最低分,又给你入围

如果您 运行 在具有 96 个内核的系统上运行,您将看到 ≈96 倍的加速。

如果您运行在具有 1 个核心的系统上运行,您将看不到加速。

您还可以通过在 GPU 或机器代码中将 stringdist.levenshtein_norm 重写为 运行 来加快速度。