如何在Python中使用多处理来加速循环执行 [英] How to speed up for loop execution using multiprocessing in python

查看:22
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆