用 AI 写 Python 脚本
为什么 AI 写的 Python 脚本会把 CPU 跑满
当你用 ChatGPT、Claude 或 Copilot 生成一段 Python 脚本,直接复制到服务器上运行,几秒后服务器卡得连 SSH 都连不上,很大概率是代码中存在死循环或无限制的资源消耗逻辑。
AI 生成的代码不一定经过性能测试,尤其是循环内部缺少 sleep、break 条件或递归深度限制。
本文带你一步步诊断、修复并避免这种情况。
前置准备:你需要什么
- 一台已经 CPU 飙升的 Linux 服务器(CentOS / Ubuntu / Debian 皆可)
- 有 root 或 sudo 权限的 SSH 账号
- 能记住几个关键命令(我会写全)
- 宝塔面板用户可以直接在后台“终端”执行命令,效果一样
分步诊断:先找到哪个进程在吃 CPU
登录服务器(用 SSH 或面板终端),执行:
top -b -n 1 | head -20
重点看 %CPU 列下数字最大的进程。
如果某个 Python 进程 CPU 占用持续超过 90%,基本就是它的问题。
按 q 退出 top。
你也可以用更直观的命令:
ps aux --sort=-%cpu | grep python | head -5
记下那个 Python 脚本的完整路径(PID 和 COMMAND 列)。
核心操作:安全地停掉脚本并检查代码
1. 强制终止问题进程
找到 PID 后执行(假设 PID 是 1234,按你实际数字替换):
kill -9 1234
如果进程数量多,可以一次性杀掉所有 Python 进程(谨慎,会中断其他 Python 程序):
pkill -9 python
2. 审查 AI 生成的关键代码段
常见 CPU 100% 的写法示例:
# 危险写法:无限循环无休眠
while True:
data = fetch_some_data()
# 没有 break 条件,也没有 time.sleep()
AI 有时会忘记加 time.sleep() 或循环退出条件。
修复方法是在循环体内加一个短暂休眠:
import time
while True:
data = fetch_some_data()
# 每轮循环暂停 0.1 秒,大幅降低 CPU 占用
time.sleep(0.1)
if some_condition:
break
另外注意:AI 生成的递归函数如果没有设置最大深度,也会吃掉 CPU。
建议加上 sys.setrecursionlimit() 或改用循环。
3. 用虚拟环境测试脚本
永远不要直接在服务器主 Python 环境里运行 AI 脚本。
先建立虚拟环境:
cd /home/your_user/
python3 -m venv test_env
source test_env/bin/activate
然后安装必要依赖,再运行脚本。
这样即使脚本崩溃也不会影响系统。
避坑指南:四件必须做的事
- 永远先预览代码:AI 生成的代码不要直接运行,先把明显有
while True的地方改好再加time.sleep()。 - 使用
timeout命令运行:给脚本设置执行上限,避免卡死:
timeout 10 python3 my_script.py
如果脚本 10 秒还没结束,会自动终止。
- 限制单个进程的 CPU 使用率:用
cpulimit工具:
apt install cpulimit -y # Ubuntu
cpulimit -e python3 -l 50 # 限制 python3 最多用 50% CPU
- 在宝塔面板中监控 CPU:直接点击“监控”图表,能快速看到哪个进程是凶手。
效果验证:确认 CPU 已恢复正常
杀掉问题进程后,再次运行 top:
top -b -n 1 | head -10
你会看到之前 100% 的 Python 进程已经消失,%Cpu(s) 的 idle 值回到 90% 以上。
再执行 free -h 和 df -h 确认内存和磁盘未爆满。
如果你修改后的脚本用虚拟环境重新运行,并且添加了 time.sleep() 和 timeout 保护,观察几分钟,CPU 占用应保持在 10% 以下。
如果你正在处理用 AI 写 Python 脚本导致服务器 CPU 占用 100% 的问题,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分——比如忘记 time.sleep() 或没设递归限制。
记住:AI 是助手,审核代码的责任永远在你手里。