как сделать вычитание списка с помощью многопроцессорной обработки в Python - PullRequest
0 голосов
/ 07 февраля 2020

Я использую следующий код для вычитания списка.

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 есть миллионы элементов,

операция вычитания очень медленная,

использование одного ЦП достигло 100% (оставшиеся другие 10+ Использование ЦП 0%), возможно использование многопроцессорной обработки может улучшить ситуацию.

как это сделать с помощью многопроцессорной обработки в Python?

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

1 Ответ

1 голос
/ 07 февраля 2020

Вы можете прочитать документацию об эффективности e in X. Если X является списком, это займет O(n) время, которое очень медленно, если вы используете его для всех элементов. В отличие от проверки предметов для наборов, который является мгновенным. Для дальнейшей оптимизации я бы использовал numpy, потому что он делает циклы просто быстрее.

Z = set(Y)
result = [e for e in X if e not in Z]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...