python - 如何有效地在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 秒,我希望它以毫秒为单位减少
解决方案
使用多处理库,您可以使用文档中的这个示例这样的池映射
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)
推荐阅读
- swift - 使用 Swift 创建简单字典时出错
- ios - 如何根据Objective C中的设备加载特定的故事板?
- python - 需要覆盖 KeyError 并继续处理 pandas DataFrame 中的其余条件
- php - 为每个请求创建一个新的弹性搜索客户端
- html - 从 CSS Animation Maker 中放置 CSS 的位置
- powerbi - Power Bi - 在高级编辑器中添加计算到分组依据
- git - 是否可以选择在交互式变基中恢复提交?
- python - 为什么即使我可以访问指定的目录,修复 python 也会返回“无法写入文件”?
- r - 摘要错误(testMCFG1[[i]])$coefficients[12, 1] : 下标越界
- flutter-layout - Flutter Web Navigator/Overlay 布局问题