我正在使用以下代码来执行列表减法。
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]