首页 > 解决方案 > 用于处理实时流市场数据的 Python 中性能最高的数据结构

问题描述

我即将处理实时流媒体股票市场数据,每秒数百个“滴答”(dicts),将它们存储在内存数据结构中并分析数据。

我正在阅读pandas并对此感到非常兴奋,只是得知append不推荐使用 pandas 的功能,因为它会在每个单独的附加项上复制整个数据帧。因此,对于高频流数据(例如金融或传感器数据)的实时处理和分析来说,它似乎pandas几乎无法使用。

所以我回到了原生 Python,这很好。为了节省 RAM,我正在考虑滚动存储最后 100,000 个数据点左右。

什么是性能最好的 Python 数据结构?

我正在考虑使用一个列表,并插入数据点编号 100,001,然后删除第一个元素,如del list[0]. 这样,我可以保留最后 100,000 个数据点的滚动历史,因为我的索引会越来越大。在 Python 中似乎不可能实现本机“滚动”数据结构(如在 C 中具有 16 位索引和增量而没有溢出检查)?

在 Python 中实现我的实时数据分析的最佳方法是什么?

标签: pythonpandasperformancedata-sciencereal-time

解决方案


您描述的工作流程让我想到了一个deque,基本上是一个列表,它允许在一端(例如右侧)扩展,同时从另一端(例如左侧)弹出(获取/删除)它们。该参考甚至有一个简短的双端队列配方列表来说明诸如实现tail或维护移动平均线(作为生成器)等常见用例。


推荐阅读