如何在 Python 中使用多处理进行列表减法



我正在使用以下代码来执行列表减法。

X = [1,2,3,4,5,6]
Y = [4,5]
# to find the elements which in X but not in Y
result = [e for e in X if e not in Y]
# expected result: [1,2,3,6]

由于 X 和 Y 中有数百万个元素,

减法运算很慢,

单个 CPU 使用率达到 100%(其他 10+ CPU 使用率为 0%(,也许使用多处理可能会改善这种情况。

如何在 Python 中使用多处理来做到这一点?

from multiprocessing import Pool
????
pool = Pool(11)
pool.map(?, ?)
pool.close()
pool.join()

您可能想阅读有关e in X效率的文档。如果 X 是一个列表,则需要O(n)时间,如果您将其用于所有项目,这真的很慢。与检查项目集不同,这是即时的。为了进一步优化,我会使用 numpy,因为它循环的速度更快。

Z = set(Y)
result = [e for e in X if e not in Z]

相关内容

  • 没有找到相关文章