python 程序一次启动有两个进程的问题(flask)
0. 背景
写了一个使用 flask 作为服务框架的程序,发现每次启动程序的时候,使用 ps 都能观察到两个 python 进程。
此外,这个程序占用了 GPU 资源,我发现有两个 python 进程,分别占用了完全相同的 GPU 显存
1. 原因
问题出在 flask 的启动方式上,我启动的时候,是这样启动的
app.run(debug=True, host='0.0.0.0', port=5000)
查到的资料如下,Flask 中的 debug 参数有以下主要作用:
debug=True 的特性:
- 自动重载
- 当源代码文件发生变化时,Flask 服务器会自动重启
- 适合开发阶段,可以即时看到代码修改的效果
- 详细的错误页面
- 当应用出错时,会显示详细的错误信息和调用栈
- 包含交互式调试器,可以在网页上直接检查变量值
- 双进程模式
- 启动一个主进程用于监视代码变化
- 启动一个子进程用于处理实际请求
debug=False 的特性:
- 单进程运行
- 只有一个进程处理请求
- 代码修改后需要手动重启服务器
- 简化的错误响应
- 出错时只返回基本的错误信息
- 不显示调试信息,更安全
我们看到,当 debug 为 True 的时候,会出现双进程的情况。
2. 解决办法
方案1:将 debug 设置为 False,可以结合环境变量设置线上和开发使用不同的配置
方案2:使用 os.environ.get('WERKZEUG_RUN_MAIN') 来检测执行进程,资源消耗性操作只在单独进程中执行
3. 题外话
- 之前开发过程中,还遇到某些版本 flask 启动 debug 为 True 时内存一直泄露的问题
- flask 默认的网络服务器为基于
Werkzeug实现的一个简单的开发服务器,线上环境中问题较多,例如性能较差、安全性不足等。老的版本还出现过并发量较大时服务被打挂无法恢复的问题。 - 生产环境,最好使用例如 gunicorn 这样的更专业的服务器来托管 flask 程序。
相关文章:
python 程序一次启动有两个进程的问题(flask)
0. 背景 写了一个使用 flask 作为服务框架的程序,发现每次启动程序的时候,使用 ps 都能观察到两个 python 进程。 此外,这个程序占用了 GPU 资源,我发现有两个 python 进程,分别占用了完全相同的 GPU 显存 1. 原因 …...
ethtool的资料
ethtoolethtool(8) — Linux manual pageethtool(8) - Linux man pageUsing ethtool in LinuxLooking at your Linux system’s network interface with ethtoolHow to Change Speed & Duplex of Ethernet Card in Linux with ethtool CommandNVIDIA EthtoolRed Hat Enterp…...
SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释
1、过滤器(Filter)的介绍 Spring Boot 的过滤器用于对数据进行过滤处理。通过 Spring Boot 的过滤器,程序开发人员不仅可以对用户通过 URL 地址发送的请求进行过滤处理(例如:过滤一些错误的请求或者请求中的敏感词等),而且可以对服务器返回的数据进行过滤处理(例如:压…...
“此电脑”中删除WPS云盘方法(百度网盘通用)
📣此方法适用于卸载WPS云盘后,WPS云盘图标依然在此电脑中显示的问题。 原理:通过注册来进行删除 步骤: WIN键R,打开运行窗口,输入regedit命令,来打开【注册表编辑器】; 从左侧,依…...
Manus AI:开启Agent元年的ChatGPT时刻(附赠资料)
1. Manus AI:全球首个通用Agent Manus AI 是全球首个通用人工智能代理,连接思想与行动,不仅思考,还能交付成果。Manus 擅长处理工作和生活中的各种任务,帮助用户完成一切。其核心理念是“less structure, more intell…...
ChromeDriver下载 最新版本 134.0.6998.35
平时为了下个驱动,到处找挺麻烦,收集了很多无偿分享给需要的人,仅供学习和交流。 ChromeDriver及浏览器134.0.6998.35 ChromeDriver及浏览器133.0.6943.141 ChromeDriver 102.0.5005.61 ChromeDriver 105.0.5195.102 ChromeDriver 108.0…...
Sass进阶之路:@forward 的可见性控制与变量覆盖
文章目录 前言1. 转发导入2. 添加前缀3. 控制可见性4. 转发时修改默认值总结 前言 在上一篇中,我们深入探讨了 use 的使用, 也介绍了 use 在使用深层模块中的变量时具有一定的缺点。所以在本文中,我们将深入解析 forward 的核心用法。 1. 转…...
MySQL作业一
一、创建数据库 #创建数据库 mysql> create database db_ck; Query OK, 1 row affected (0.01 sec)mysql> show databases like "db_%"; ----------------- | Database (db_%) | ----------------- | db_ck | | db_system | ----------------…...
虚拟机总结| 关于虚拟机的一些配置总结
前言 每次安装新的虚拟机都需要重新在网上搜索如何配置网络,我需要写一个自己的部署步骤,增加工作效率,不用每次配置的时候再去网上去翻找。 1.只需要联网功能记录(不固定IP) 1.1 修改ifcfg-ens33 vi etc/sysconfig/network-scripts/ifcfg…...
leetcode-sql数据库面试题冲刺(高频SQL五十题)
题目: 577.员工奖金 表:Employee -------------------- | Column Name | Type | -------------------- | empId | int | | name | varchar | | supervisor | int | | salary | int | -------------------- empId 是该表中具有唯一值的列。 该表的每一行…...
OpenManus:解锁测试工程师的效率密码——实践与应用指南
随着软件行业的快速发展,测试工程师面临的挑战也日益增多:如何在有限的时间内保证产品质量、如何高效生成测试数据、如何快速定位问题根源?这些问题直接影响到产品上线的节奏和用户体验。而在这一背景下,开源项目 OpenManus 的出现…...
Mybatis中的设计模式
1. 工厂模式(Factory Pattern) 概念:工厂模式是一种创建对象的设计模式,它将对象的创建和使用分离,通过一个工厂类来负责创建对象。MyBatis 中的应用:MyBatis 使用 SqlSessionFactory 来创建 SqlSession 对…...
[PWNME 2025] PWN 复现
这种比赛得0也不容易,前边暖声还是能作的。 GOT 指针前溢出,可以溢出到GOT表,然后把后门写上就行 Einstein 这个拿到WP也没复现成,最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…...
【笔记】记一次easyExcel中注解ExcelProperty映射字段赋值无效问题
背景 最近在开发一个导入excel文件解析数据并入库的功能,导入过程中出现一个BUG:后端映射实体字段pType没有被赋值,但是导入的excel源文件是有数据。 定位问题 经过debug源码发现最终创建对象并赋值使用的是net.sf.cglib.beans.BeanMap类中…...
肖恩的n次根
1.肖恩的n次根 - 蓝桥云课 问题描述 喜欢研究数学问题的肖恩注意到,在编程语言中通常内置函数只有开平方根和开立方根,但是肖思想知道开高次方根(大于3次方称为高次方),应该怎么做。请你设计一个程序来帮帮肖恩。 输…...
《AI浪潮下的创新枢纽:火山引擎大模型应用实验室平台》
《AI浪潮下的创新枢纽:火山引擎大模型应用实验室平台》 引言:AI 时代的新引擎 在科技飞速发展的当下,人工智能(AI)已不再是遥不可及的概念,它如同一股汹涌的浪潮,席卷了我们生活的每一个角落。…...
生成式AI系列(二) LLM生成质量改善的方法——RAG检索增强生成
一、引子 我们需要通过一些手段来提升LLM生成内容质量,主要的有下面三项,本文将主要介绍RAG。 1. 提示工程(Prompt Engineering) 通过精心设计的提示(Prompt)来提升输出的质量 2. 模型微调(Fi…...
Visual studio + Qt 项目配置管理
Visual studio Qt 项目配置管理 1.本机顺利安装 vs 和 Qt 软件 并且设置好Qt 的环境变量比如 E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include //这里是你电脑上Qt的路径,每台电脑不一样…...
直装永久授权,最新专业版集成VB7
无论是学生、教师还是职场工作人员,办公软件在日常工作和学习中都是不可或缺的重要工具。在众多办公软件中,微软的Microsoft Office和金山软件的WPS Office最常用的选择。对于许多使用要求不高的小伙伴而言,WPS Office因其易用性和免费版本的…...
AI数字人| Fay开源项目、UE5数字人、本地大模型
数字人实践教程 本教程主要是讲如何在本地UE部署Fay数字人的开源框架。 最终效果可以与人进行自然语言的对话,花了大概10个h的时间到,踩了很多坑,同样想实现的朋友可以作为参考 参考文档:Fay 数字人开源框架 - 飞书云文档 官方的教…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
