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

使用Python requests上传7G文件CPU占满的原因咨询

大文件上传导致CPU占满、内存飙升的原因分析

上传小文件时本地CPU无明显占用,但上传7G大小的文件时,本地CPU被完全占满,系统近乎停滞,同时程序内存占用随运行时间线性增长。以下是用于向Web API上传文件的Python代码片段:

import requests
import json

api_url = "https://ourserver/ourserverfolder/api/auth/Login"
dto = { "username": "ourusename", "password": "ourpassword" }
headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' }
response = requests.post(api_url, data=json.dumps(dto), headers=headers)
response_obj = response.json()
bearer = response_obj["token"]

upload_url = "https://anotherserver/anotherserverfolder/UploadFile"
filename = r"D:\bigfile.zip"
filenamewithoutfolder = filename.split('\\')[-1]
with open(filename, 'rb') as f:
    file = (filenamewithoutfolder, f, 'application/x-zip')
    upload_files = { "file": file }
    upload_headers = { 'Authorization': 'Bearer ' + bearer }
    upload_response = requests.post(upload_url, files=upload_files, headers=upload_headers, 
verify=False)

具体原因

  • 内存缓冲区问题:requests库默认会将files参数对应的文件完整加载到内存中,再构建请求发送。对于7G的超大文件,这会导致内存占用随文件读取持续线性增长,同时内存中处理海量数据的操作会大量消耗CPU资源。
  • multipart/form-data构建机制:requests在生成multipart/form-data格式的请求体时,需要预先计算整个请求的总长度。为了得到这个长度,它会读取文件的全部内容,而非边读取文件边发送请求。这个扫描整个文件的过程会持续占用CPU,同时文件内容全部加载进内存进一步加剧了资源消耗。

内容的提问来源于stack exchange,提问作者Anders Lindén

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:15:05