我正在开发一个项目,我想在Python中执行数据采集,数据处理和GUI可视化(使用pyqt with pyqtgraph)。原则上实现了每个部件,但是不同的部件没有很好地分开,这使得难以进行基准测试和改进性能。所以问题是:
在软件的不同部分之间处理大量数据是否有好方法?
我想到以下情况:
当我说"大量数据"时,我的意思是我得到的数据每秒大约有200万个数据点(16位),需要处理并可能还存储。
我是否可以使用Python的任何框架来正确处理大量数据?也许是我可以连接的数据服务器的形式。
答案 0 :(得分:2)
换句话说,您是否获得了如此多的数据,以至于在需要时无法将所有数据保存在内存中?
例如,有一些测量会产生如此多的数据,处理它们的唯一方法是事后:
如果您的计算机系统能够跟上数据生成的步伐,您可以在每个阶段之间使用单独的Python queue。
如果您的测量数据创建的数据超出了系统可以消耗的数据,那么您应该首先定义几个层次(可能只有两层),了解数据的重要性:
一个类比可能是视频流...
- 无损 - 存档的黄金大师
- 有损 - YouTube,Netflix,Hulu可能会降低几帧,但您的体验不会受到太大影响
根据您的说明,获取和处理必须无损,而 GUI /可视化可以是有损
对于无损数据,您应该使用queues。对于有损数据,您可以使用deques。
无论您的数据容器如何,以下是连接阶段的三种不同方法:
您似乎只需要在每个阶段之间建立1-1关系,因此生产者 - 消费者设计看起来会适合您的应用。