Windows10 Python3.9随机出现模块导入耗时10秒问题求助
Python应用随机出现模块导入固定10秒耗时问题
问题表现
- 故障触发无规律,上一次启动应用运行正常,下一次启动时会出现大量模块导入耗时约10秒的异常
- 问题不绑定特定依赖库,导入PyQt5、numpy、scipy、pandas等包含二进制扩展的库时均会复现
- 故障出现后无手动修复手段,最长需要等待1小时启动速度才会自行恢复,固定10秒左右的单模块导入耗时符合系统或运行时层面超时机制的特征
- 已验证无效的排查方案:清理PYTHONPATH仅保留必要路径、删除所有
__pycache__目录、重启主机、更改代码存储位置、排查自动清理缓存的系统计划任务
运行环境
- 操作系统:Windows 10
- Python版本:3.9.8
诊断日志
通过python -X importtime my_app.py采集的导入耗时日志片段如下:
... import time: 1958 | 1958 | PyQt5.QtPositioning import time: 4192 | 4192 | PyQt5.QtLocation import time: 27015 | 27015 | PyQt5.QtQuick import time: 10188068 | 10188068 | PyQt5.QtQuick3D import time: 10067480 | 10067480 | PyQt5.QtQuickWidgets import time: 10090626 | 10090626 | PyQt5.QtRemoteObjects import time: 10115549 | 10115549 | PyQt5.QtSensors import time: 10065570 | 10065570 | PyQt5.QtSerialPort ...
从日志可以看到异常时单模块导入耗时达到10000ms(即10秒)级别,正常时同模块导入耗时仅为毫秒级。
排查方向与解决方案
- 排查Windows Defender实时扫描阻塞:Defender对进程加载的二进制文件(pyd、dll格式的Python扩展模块)会执行安全扫描,扫描队列拥堵或触发云校验逻辑时会出现固定时长的阻塞。可将Python安装目录、虚拟环境目录、项目依赖目录加入Defender排除路径,故障复现时查看任务管理器中
MsMpEng.exe进程的CPU、磁盘占用是否同步升高即可验证。 - 排查数字签名证书校验超时:Windows加载带数字签名的二进制文件时,默认会联网校验签名对应的证书吊销状态,当网络环境无法访问微软证书服务器时,会等待固定10秒超时后跳过校验。可打开「Internet选项-高级」,在安全分类下取消勾选检查发行商的证书是否吊销、检查服务器证书是否吊销,重启系统后测试故障是否复现。
- 排查终端安全软件拦截:域环境下安装的EDR、终端管控类软件会对进程加载的所有模块执行安全校验,校验逻辑存在超时阈值时就会出现固定10秒左右的加载阻塞,可联系单位IT管理员查询对应时段python进程的加载拦截日志确认。
- 排查文件句柄锁定问题:Windows Search索引服务、第三方磁盘工具在扫描文件时可能短暂锁定文件句柄,导致Python读取模块文件时阻塞,可临时停止Windows Search服务后复现测试。
- 精准定位手段:故障出现时运行Process Monitor,添加进程名过滤规则为
python.exe,监控文件读写、注册表操作的长耗时项,可直接定位触发阻塞的具体系统调用。
内容的提问来源于stack exchange,提问作者Basil Sinkevich
相关产品推荐
相关产品推荐

