问题描述
我正在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秒,我希望它以毫秒为单位减少
解决方法
使用多处理库,您可以使用文档中的此示例的Pool映射
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)