QT 主线程 优化 卡顿 主线程上的同步重活 防重入:进行中直接 return,避免连点双开。 把「一次性任务」收到 ThreadPoolExecutor(max_workers=2~3),限制峰值线程数
系统排查主线程上的同步重活(扫盘、网络、大列表等),再逐项优化。
已排查并优化主线程重活,卡顿应明显减轻。
已移出主线程
- 授权校验(原先最长可卡到网络超时)
- 关 Chrome(
wait_procs) - 启服务前扫浏览器路径
- MAC 网卡枚举
- 启动时
find_chrome/ 日志 / 采集页结构
减轻主线程探测
- 仪表盘先画骨架,CDP/端口走异步刷新(切首页不再同步探测)
- Chrome / 运行态结果短缓存(~1.2s),按钮刷新只探测一次
- 切日志/采集页延后到下一事件循环
保留在主线程的轻量操作
- 读已缓存配置、画 UI、页内进度条(浏览器设置扫描仍在后台)
collected_fetch_*去重:同一proxy_key+data_key已在拉取时忽略新请求,避免连点/切页叠线程。licence_verify/browser_resolve/chrome_close防重入:进行中直接 return,避免连点双开。
- 把「一次性任务」收到
ThreadPoolExecutor(max_workers=2~3),限制峰值线程数;
默认情况下我们在代码中创建的对象都属于主线程,这个对象的槽函数在调用的时候,占用的都是主线程的时间,
1、进行耗时操作时,如果在UI线程(主线程)里面进行耗时操作,界面会不响应用户操作,产生卡界面的效果 那天我们使用事件循环解决,今天就用线程解决。
2、提升程序性能,现在的电脑一般都是多核CPU,多线程并行处理事务,可以大大提升程序的性能。
QThread有两种工作模式,即
- 消息循环模式
- 无消息循环模式
QThread Class | Qt Core | Qt 6.11.1
A QThread object manages one thread of control within the program. QThreads begin executing in run(). By default, run() starts the event loop by calling exec() and runs a Qt event loop inside the thread.
enum QThread::Priority
该枚举类型表示操作系统应如何调度新创建的线程。
| 常量 | 值 | 说明 |
|---|---|---|
QThread::IdlePriority |
0 |
仅在没有其他线程运行时调度。 |
QThread::LowestPriority |
1 |
调度频率低于 LowPriority。 |
QThread::LowPriority |
2 |
比 NormalPriority(正常优先级)更少调度。 |
QThread::NormalPriority |
3 |
操作系统的默认优先级。 |
QThread::HighPriority |
4 |
比 NormalPriority(正常优先级)更频繁地调度。 |
QThread::HighestPriority |
5 |
比 HighPriority(高优先级)更频繁地调度。 |
QThread::TimeCriticalPriority |
6 |
尽可能频繁地调度。 |
QThread::InheritPriority |
7 |
使用与创建线程相同的优先级。这是默认值。 |

浙公网安备 33010602011771号