如何在Python中使用多处理来加速循环执行 [英] How to speed up for loop execution using multiprocessing in python
本文介绍了如何在Python中使用多处理来加速循环执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个列表。清单A包含500个单词。清单B包含10000个单词。我正在尝试为列表A查找与B相关的相似单词。我正在使用Spacy的相似性函数。
我面临的问题是需要很长时间才能计算出来。我不熟悉多进程用法,因此请求帮助。
如何在python中通过多处理来加速for循环部分的执行?
以下是我的代码。
ListA =['Dell', 'GPU',......] #500 words lists
ListB = ['Docker','Ec2'.......] #10000 words lists
s_words = []
for token1 in ListB:
list_to_sort = []
for token2 in ListA:
list_to_sort.append((token1, token2,nlp(str(token1)).similarity(nlp(str(token2)))))
sorted_list = sorted(list_to_sort, key = itemgetter(2), reverse=True)[0][:2]
s_words.append(sorted_list)
推荐答案
您尝试过nlp.pipe()
吗?
您可以这样做:
from operator import itemgetter
import spacy
nlp = spacy.load("en_core_web_lg")
ListA = ['Apples', 'Monkey'] # 500 words lists
ListB = ['Grapefruit', 'Ape', 'Oranges', 'Banana'] # 10000 words lists
s_words = []
docs_a = nlp.pipe(ListA)
docs_b = list(nlp.pipe(ListB))
for token1 in docs_a:
list_to_sort = []
for token2 in docs_b:
list_to_sort.append((token1.text, token2.text, token1.similarity(token2)))
sorted_list = sorted(list_to_sort, key=itemgetter(2), reverse=True)[0][:2]
s_words.append(sorted_list)
print(s_words)
这应该已经为您加快了速度。函数nlp.pipe()
还具有参数n_process
,这可能就是您要查找的内容。
这篇关于如何在Python中使用多处理来加速循环执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文