我有 200k 列表存储在 MySQL 数据库中。给定一个列表 A,我需要计算 A 和 200k 个列表中的每个列表 X 之间的相似度分数。假设相似性度量很简单,例如 A 和 X 的集合交集的长度。
鉴于成对比较的性质,我想不出为此改进 O(N) 的方法,因此改进运行时意味着使用多个 CPU 内核。现在,我使用 multithreading.Pool() 将这个任务拆分为 4 个核心,但仍然需要将近 10 分钟才能完成。更糟糕的是,我的电脑会关闭以保护自己。
对于以前处理过此问题的任何人,您是否有可以分享的替代方法?