首页 > 解决方案 > 如何有效地在python的“for-loop”中应用多线程?

问题描述

我正在计算 for 循环中两个值之间的余弦值,我想知道如何在我的程序中应用多线程并提高效率。

from sklearn.metrics.pairwise import cosine_similarity
import time

questionset=[]
for i in range(0,8000):
    questionset.append(i)


cos_sims=[]



start_time = time.time()
for question in questionset:
   sims = cosine_similarity(question, 0.5)
   cos_sims.append(sims)
print("--- %s seconds in question filter---" % (time.time() - start_time))

完成 cos 值计算循环的时间约为 1 秒,我希望它以毫秒为单位减少

标签: pythonpython-3.xpython-2.7python-multithreading

解决方案


使用多处理库,您可以使用文档中的这个示例这样的池映射

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(multiprocessing.cpu_count()) as p:
        print(p.map(f, [1, 2, 3]))

只需将 cosine_simularity 用作 f 而不是将其打印分配给您的输出列表(cos_sims)


推荐阅读