【发布时间】:2019-12-13 06:56:12
【问题描述】:
我有两个列表。列表 X 包含 1000 个单词。列表 Y 包含 500 个单词。我正在尝试为列表 X 找到与 Y 相关的相似词。
我正在使用 Spacy 的相似函数。
我面临的问题是执行的for循环部分需要很长时间。我从研究中了解到,在 python 中,多线程只会产生并发的错觉,因此并没有任何真正的性能提升。因此,我认为多处理是一种方式,但我是多处理使用的新手,因此请求帮助。
如何通过python中的多处理加快for循环部分的执行?
以下是我的代码。
import en_vectors_web_lg
nlp = en_vectors_web_lg.load()
ListX =['HSBC', 'JP Morgan',......] #500 words lists
ListY = ['Currency','Blockchain'.......] #1000 words lists
s_words = []
for token1 in ListY:
list_to_sort = []
for token2 in ListX:
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)
【问题讨论】:
-
您可以通过在循环外对列表进行排序来减少计算时间。
-
与stackoverflow.com/questions/53466369/… 重复,但我不能这样标记它,因为没有答案被接受或赞成。
标签: python python-3.x for-loop multiprocessing spacy