You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环调用requests.post耗时久CPU占用过高如何优化

性能优化方案

当前代码采用串行同步方式逐次发送post请求,IO等待时间占比极高,同时存在变量不规范、资源未合理释放的问题,可从以下维度优化:

  • 修复基础语法问题
    现有代码存在变量大小写不匹配问题:定义的请求体变量为Data,实际传入post方法的参数为data,同时如果datalist、account为固定键名,需要添加引号避免变量未定义报错,先修正语法问题再做性能优化。
  • 优先使用接口批量查询能力
    先确认目标POST接口是否支持传入多组queryValue批量返回结果,若支持直接将多份查询参数合并为单次请求发送,可直接消除90%以上的请求开销,是优化效果最明显的方案。
  • 改用异步并发请求替代串行请求
    如果接口不支持批量查询,把同步请求库requests替换为异步请求库aiohttp,同时根据接口限流规则设置合理的并发数,将原本串行的IO等待改为并行,耗时可直接降低至原有的1/10~1/50(根据并发数调整)。
    同步场景下也可以用requests.Session()复用TCP连接,减少多次握手的开销,示例代码:
    import requests
    from requests_negotiate import HTTPSPNEGOAuth
    
    session = requests.Session()
    session.auth = HTTPSPNEGOAuth()
    result = []
    for i in list:
        data = {"queryValue": i["columnA"]}
        resp = session.post(url, json=data)
        resp.raise_for_status()
        columnB = resp.json()["datalist"]["account"]
        result.append(columnB)
    
  • 降低内存占用
    10-20G的内存占用通常是因为全量加载了超大的list数据源、或者所有请求响应结果都缓存在内存没有释放导致的,可采用分批次处理的方式:每次只加载1000~10000条数据到内存,处理完这批后再加载下一批,处理过程中不要留存不需要的响应原始内容,只保留需要的ColumnB字段即可。

内容的提问来源于stack exchange,提问作者Ananya Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:24:04