python - 想加快我在 python 中的代码执行速度
问题描述
我是 python 新手,想加快代码执行速度。有人可以帮助我提高代码的性能吗?代码如下:
def calcualte_edge_weight(df, r1, r2):
data1 = df[df.reviewer_id == r1]
data2 = df[df.reviewer_id == r2]
products_r1 = set(data1.product_id) # products set on which r1 write reviews
products_r2 = set(data2.product_id) # products set on which r2 write reviews
products_common = products_r1.intersection(products_r2)
total_weight = 0
avg_score = 0
for p in products_common:
rating1 = data1[data1.product_id == p].rating.iloc[0]
rating2 = data2[data2.product_id == p].rating.iloc[0]
time1 = data1[data1.product_id == p].date.iloc[0]
time2 = data2[data2.product_id == p].date.iloc[0]
rd = abs( rating1 - rating2)
td = abs((dt.strptime(str(time1).strip(), '%m/%d/%Y') - dt.strptime(str(time2).strip(), '%m/%d/%Y')).days)
if rd < 2 and td < 10:
total_weight = total_weight + 1
avg_score = total_weight/len(products_common)
return avg_score
解决方案
有很多工作可以加速您的代码,首先,pandas iloc 不是从系列中读取标量的最快方法。无论如何,我建议您将代码分成几部分并对其进行分析。分而治之是一种很好的做法。我建议使用分析工具。
我是perf_tool的开发者,它对这些情况非常有用。
推荐阅读
- ios - 从设置打开应用程序时如何检测授权状态是否更改
- windows - 加载DLL文件时,是否也调用了DLL文件的入口点?
- regex - 从字段中提取值
- mysql - 如何根据字符串列按降序对数据进行排序?
- ios - UITableViewCell 高度变化时闪烁
- javascript - 使用 JS 在 html 中创建具有动态行和列的表
- python - pysftp.CnOpts() 报告“ImportError: DLL load failed: The specified procedure could not be found”
- c# - 使用 c# 开发的 Windows 服务锁定和解锁文件夹
- reactjs - 我无法通过示例创建地图
- react-native - 如何修改 app.json 文件并更改 sdkVersion 以获得博览会小吃?