Python性能问题

时间:2019-10-16 11:44:48

标签: python web-services

我有如下数据

print(json_ls)

[{'user_id': '1', 'lot_number': 'b49d18f1b', 'status': 'send'}, 
 {'user_id': '2', 'lot_number': 'b49d18f1c', 'status': 'send'},
 {'user_id': '3', 'lot_number': 'b49d18f1d', 'status': 'send'},
 {'user_id': '4', 'lot_number': 'b49d18f1e', 'status': 'send'}]

我需要以以下格式将上述数据发送到API

{'users': [

{'user_id': '1',  'status': 'ready'}, 
 {'user_id': '2',  'status': 'ready'},
 {'user_id': '3',  'status': 'ready'},
 {'user_id': '4',  'status': 'ready'}

]} 

我写了下面的代码,因为url需要批号,所以我最初考虑是在数据框中放入下面的代码。

final_data = {'users': []}                                              

  for ls in json_ls:
    lot = ls.get("lot_number")
    url = url + lotnumber                                                  
    request_data = {a: b for (a, b) in ls.items() if a != "lot_number"}     
    final_data['users'].append(request_data)

    for users in final_data.get("recipients"):                              
           users["status"] = "ready"
    response = requests.patch(url, data=json.dumps(final_data), headers=headers)

要处理500个用户使用API​​,需要花费15分钟的时间,而且并非所有用户状态都已更改为“就绪”。对于每个用户,该状态应以“就绪”状态发送。

任何人都可以帮助我,以及如何提高编码部分的性能(我已经评论了响应并检查了执行时间。速度更快,而接缝API本身需要花费时间来响应每个用户)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我怀疑您的性能问题归结为发送不正确的数据,您的最终数据始终包含以前迭代中的用户,因此您没有更新500个用户,而是要更新1 + 2 + ... + 500个用户(125k用户) )。

真的,您根本不需要最终数据。

for ls in json_ls:
    lot = ls.get("lot_number")
    url = url + lotnumber                                                
    response = requests.patch(url, data=json.dumps({'users': [ {'user_id':ls['user_id'], 'status': 'ready'}]}), headers=headers)