V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ning2035
V2EX  ›  Python

求助:关于在 pyqt5 中使用 pyqtgraph 模块绘制动态波形图电脑内存不断增加的问题

  •  
  •   ning2035 · 2020-11-24 17:13:01 +08:00 · 1095 次点击
    这是一个创建于 1469 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目背景说明:这个项目是为了实现一个带上位机的电流表

    项目涉及到的技术栈:1.模拟电流表的嵌入式软件,硬件
    2.上位机界面:pyqt5+pyqtgraph
    3.数据存储:mongodb

    细节说明:本项目为一个单片机,通过串口每秒给上位机发送 1 帧数据,每 1 帧数据含 100 个 int 类型的数据,上位机从串口中收取单片机发送的数据,然后处理之后写入 mongodb,此为功能 1:写入数据库,问题就出现在第二个功能上,当从 mongodb 中查询数据,然后用 pyqtgraph 显示在界面上的时候,电脑的内存随着 pyqtgraph 显示的曲线增多而不断增加,目前测试是 1.5G 的数据,会使电脑占用的内存达到 90%,我电脑是 24G 内存,而且我查询数据的时候,不保存数据,仅显示,因为一开始全部查询上位机直接挂掉,所以现在循环查询,即从数据库中查询 100 个_ID(100 个文档的数据,我将默认的_id 存为从 1 开始的递加的序号了),然后用 pyqtgraph:self.plotWidget_max_load.plot(y=d, x=a, pen='b')(a,b 为同样长度的数组)显示出来,然后将 a,b 初始化,然后再查询,再显示,再初始化,循环,一开始的没有异样,但是随着显示的数据增多,内存开始增加,最后达到 90%,我有试过将上文显示的那条语句屏蔽掉,那么电脑的内存就不再增加,不管数据有再多,都不会增加.所以问题就出在那条语句上,但是真的不知道是 pyqt5 导致的呢,还是 pyqtgraph 导致的,我也试图百度过,谷歌过,但是能查到的资料都是类似于简单使用,而且一般的人也没有我样多的数据吧?所以考虑了很久都没有找到了答案.目前妥协的方式是,降低采样率,即 100 个点里选一个点,或者是 1000 个,10000 个点里采一个点,这样数据量很少,也不会增加内存了,但是长期挂测,还是会因为数据量过大,而出现上面描述的问题.


    萌新不容易啊,好不容易,等了四个小时,才能提问,第一次提问以上有说的不明白的对方,还请见谅,希望各位大佬指教,谢谢
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3493 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:22 · PVG 19:22 · LAX 03:22 · JFK 06:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.