首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的for循环遍历python列表

嵌套的for循环遍历python列表
EN

Stack Overflow用户
提问于 2018-06-19 22:25:14
回答 1查看 73关注 0票数 2

我必须遍历超过4000个项目的列表,并使用python中的推荐算法检查它们的相似性。

运行脚本需要很长时间(10-11个小时),我想合并多线程来提高速度,但不知道如何准确地做到这一点。

代码语言:javascript
复制
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt

    data=pd.read_csv('data.csv',index_col=0, encoding="ISO-8859-1")       

    # Get list of unique items
    itemList=list(set(data["product_ref"].tolist()))

    # Get count of customers
    userCount=len(set(data["customer_id"].tolist()))

    # Create an empty data frame to store item affinity scores for items.
    itemAffinity= pd.DataFrame(columns=('item1', 'item2', 'score'))

    def itemUsers(ind):
      return data[data.product_ref==itemList[ind]]["customer_id"].tolist()

    rowCount=0
    for ind1 in range(len(itemList)): 
        item1Users = itemUsers(ind1) 
        pool = Pool()
        pool.map(loop2, data_inputs)
        for ind2 in range(ind1+1, len(itemList)): 
            print(ind1, ":", ind2)       
            item2Users = itemUsers(ind2) 
            commonUsers= len(set(item1Users).intersection(set(item2Users))) 
            score=commonUsers / userCount
            itemAffinity.loc[rowCount] = [itemList[ind1],itemList[ind2],score] 
            rowCount +=1
EN

回答 1

Stack Overflow用户

发布于 2018-06-19 22:28:09

并入多线程不会改善你的运行时间。

这样想吧,当你多线程时,你将计算时间分散在多个线程之间--当你可以将其分散到一个进程中时。

例如,当你在线程上等待用户输入,你想在等待时进行计算,但这不是你的情况,它可能会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50930805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档