提问人:Dennis L 提问时间:11/12/2023 更新时间:11/12/2023 访问量:25
Python http 服务器中的内存泄漏
Memory leak in Python http server
问:
我正在运行一个接受 base64 编码图像的服务器,它获取这些图像并通过 tflite 模型运行它们。当我开始向服务器发送图像时(有很多图像,因为它们是从网络摄像头源捕获的),内存使用量在使我的计算机崩溃之前达到了顶峰(超过 10GB)。
这是服务器:
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length).decode('utf-8')
parsed_data = json.loads(post_data)
snapshot = tracemalloc.take_snapshot()
stats = snapshot.statistics('lineno')
try:
letter, conf = getHands(parsed_data['base64Img'].split(',')[-1])
letter = letter.split('\n')[0].split(' ')[-1]
except:
letter = ''
conf = ''
print("No Hands Detected")
res = json.loads(f'{{"letter": "{letter}", "conf": "{conf}"}}')
with open('debug.txt', '+a') as FO:
for i in stats:
FO.write(str(i))
FO.write('\n\n')
self._set_response(200)
self.wfile.write(json.dumps(res).encode('utf-8'))
def _set_response(self, status_code):
self.send_response(status_code)
self.send_header('Content-type', 'application/json')
self.end_headers()
def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler, port=5001):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print(f"Starting server on port {port}...")
httpd.serve_forever()
如您所见,我已经在尝试使用 tracemalloc 查找泄漏,但我似乎找不到任何看起来非常可疑的东西。
如果需要任何其他内容,或者泄漏不可能出现在代码的这一部分,我当然也可以提供其他部分。
答: 暂无答案
评论