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

如何测量Python脚本指定代码段所消耗的互联网流量大小

统计这段Python代码流量消耗的可行方案
  • 方案1:直接计算请求/响应字节数(无额外依赖)

你当前使用的urllib.request.urlopen(你代码里的uReq应该是该方法的别名)发起请求的流量主要由请求头、响应头、响应体三部分构成,直接计算三部分的字节和即可:

import urllib.request

test_url = "替换为你的目标URL"
req = urllib.request.Request(test_url)
with urllib.request.urlopen(req) as uClient:
    # 计算请求头字节数
    req_header_str = "\r\n".join([f"{k}: {v}" for k, v in req.header_items()])
    request_size = len(req_header_str.encode("utf-8"))
    # 计算响应头字节数
    response_header_size = len(uClient.info().as_string().encode("utf-8"))
    # 计算响应体字节数
    testpage_html = uClient.read()
    response_body_size = len(testpage_html)

# 总流量(单位:字节)
total_traffic = request_size + response_header_size + response_body_size
print(f"总流量:{total_traffic} B / {total_traffic/1024:.2f} KB / {total_traffic/1024/1024:.2f} MB")

该方案优势是实现简单无需额外依赖,误差可以控制在1%以内;缺点是默认不会统计3XX重定向过程中产生的跳转流量,如需统计需要自行实现重定向逻辑的流量累加。

  • 方案2:进程级网络IO统计(包含底层网络开销)

如果需要统计TCP握手、DNS查询、重定向等所有底层网络流量,可以借助psutil库统计代码执行前后当前进程的网络IO差值:

  1. 先安装依赖:pip install psutil
  2. 代码实现:
import psutil
import urllib.request

test_url = "替换为你的目标URL"
current_process = psutil.Process()
# 记录执行前的网络收发字节数
io_before = current_process.io_counters()
send_before, recv_before = io_before.write_bytes, io_before.read_bytes

# 执行你的原有业务代码
uClient = urllib.request.urlopen(test_url)
testpage_html = uClient.read()
uClient.close()

# 记录执行后的网络收发字节数
io_after = current_process.io_counters()
send_after, recv_after = io_after.write_bytes, io_after.read_bytes

# 总流量 = 发送增量 + 接收增量
total_traffic = (send_after - send_before) + (recv_after - recv_before)
print(f"总流量:{total_traffic} B")

该方案优势是可以覆盖所有网络层面的开销,自动统计重定向等跳转流量;缺点是如果代码执行期间当前Python进程有其他网络操作,会被合并计入流量统计,适合单线程、仅当前请求发起网络调用的场景。

  • 方案3:抓包统计(适合精准调试场景)

如果需要完全精准的流量统计,可以给urllib配置本地代理,通过Charles、Fiddler等抓包工具直接捕获所有请求流量,也可以通过mitmproxy的Python SDK在代码内自动完成流量统计,适合需要排查流量明细的复杂场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:39:01