pyqt股票行情软件性能优化 差点又让python背了锅

因为对c++一直处于差不多能看的懂代码,但写的话一头包,所以毅然采用pyqt编写一个股票行情软件。部分窗体截取如下:

等大体上快完工了,跑着跑着突然发现,界面卡顿的一笔。一看cpu,飚到了十几。瞅瞅人家的行情软件,那cpu使用都是稳定的在2以下。

行情一频繁就尿裤,难道是py太拉胯了?

于是立马使用cProfile:

python -m cProfile -s cumulative main.py

 

1.一号锅:拉胯的setStyleSheet

首先发现setStyleSheet这个函数耗时太久,单发调用居然要5ms,而股票嘛,有红有绿,这调用又非常频繁,故而这肯定是一个瓶颈。 网上搜索了一下,setStyleSheet会触发上级组件的重绘,所以性能上无比拉胯。

不用setStyleSheet修改文字颜色,那就用别的方案。有用palette的,我试了下,毫无效果,并且又注意到官方说不保证palette在所有平台上都一致,所以palette作废。

另外,还可以给QLabel设置html代替纯文本,于是简单撸了以下工具函数

def set_label_text_with_style(label, text, style):
    label.setText(f"<div style='{style}'>{text}</div>")

对代码进行全局替换。

再一跑,似乎cpu调用下降了,但还是8左右,也不能100%确定这到底有没有起到性能上的优化作用。

于是继续查看下cProfile的输出结果,终于发现了罪魁祸首:QListWidget

2.二号锅:无比拉胯的QListWidget

QListWidget这兄弟,如果数据变化不频繁的话,那还是很能罩的住场子的,譬如什么好友列表,音乐播放列表。但是碰到高速行情,就不行了。大量的ListItem的添加,删除,QListWidget的性能就开始跟不上了。

于是继续网上搜索,又说用QListView的,但是那文档实在是稀烂,而且有各种各样的api。我不就是显示个行情,几个数字而已,何必搞那么复杂。还是自己撸个类似的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值