相同硬件下Linux(Pop OS 22.04LTS)的Python运行速度远慢于Windows 10的问题咨询
Linux下Python运行速度慢于Windows的排查与优化方案
针对你在Pop!_OS 22.04 LTS上运行Iterative deepening Boolean Negamax算法时速度远慢于Windows的问题,以下是具体的排查和优化步骤:
1. 先确保基准测试的一致性
- 保证两次运行完全相同的代码和输入数据,临时关闭所有
print类输出(终端IO速度差异会严重影响耗时)。 - 关闭双系统中所有后台不必要的程序/服务,确保CPU、内存资源充足。
2. 检查Python编译优化等级
系统自带的Python可能未启用最高级编译优化,而微软商店的Python通常用MSVC做了深度优化。
- 查看Linux Python的编译参数:
如果输出中没有python3 -c "import sysconfig; print(sysconfig.get_config_var('CFLAGS'))"-O3或--enable-optimizations,建议自行编译优化版Python:
用编译后的# 安装编译依赖 sudo apt install build-essential libssl-dev zlib1g-dev libreadline-dev libsqlite3-dev libffi-dev # 下载Python 3.10源码并编译 wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz tar xzf Python-3.10.12.tgz && cd Python-3.10.12 ./configure --enable-optimizations --with-lto CFLAGS="-O3" make -j12 # 5900X为12核,按需调整核心数 sudo make altinstallpython3.10重新运行测试。
3. 调整CPU调度与进程优先级
- 以高优先级运行程序:
nice -n -10 python3 your_script.py - 切换CPU到性能模式(避免节能调度限制性能):
测试完成后可切回节能模式:# 查看当前调度模式 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # 设置为性能模式 sudo cpupower frequency-set --governor performancesudo cpupower frequency-set --governor powersave
4. 排查垃圾回收(GC)的影响
递归算法可能频繁触发GC拖慢速度,可临时禁用GC测试:
import gc gc.disable() # 运行你的算法代码 gc.enable()
如果速度提升明显,可调整GC阈值减少触发频率:
gc.set_threshold(500000, 5000, 5000)
5. 用性能分析工具定位热点
用cProfile找出代码中耗时最高的部分,对比双平台差异:
- Linux上运行:
python3 -m cProfile -s cumulative your_script.py - Windows上运行:
重点关注递归调用、循环逻辑的耗时差异,针对性优化(比如用循环替代递归、用局部变量减少属性查找开销)。python -m cProfile -s cumulative your_script.py
6. 尝试PyPy替代CPython
PyPy对算法密集型代码的优化远优于CPython,尤其适合递归场景:
sudo apt install pypy3 pypy3 your_script.py
内容的提问来源于stack exchange,提问作者Flyrobot27
相关产品推荐
相关产品推荐

