【问题标题】:Most performant data structure in Python to handle live streaming market data用于处理实时流市场数据的 Python 中性能最高的数据结构
【发布时间】:2020-09-27 02:12:21
【问题描述】:

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

我正在阅读 pandas 并对此感到非常兴奋,只是得知不推荐使用 pandas 的 append 函数,因为它会在每个单独的追加上复制整个数据帧。 所以看起来pandas 几乎无法用于高频流数据的实时处理和分析,例如财务或传感器数据。

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

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

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

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

【问题讨论】:

    标签: python pandas performance data-science real-time


    【解决方案1】:

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

    【讨论】:

    • 哇,太棒了!正是我想要的。文档甚至说双端队列在两端弹出和/或附加时针对性能进行了优化。他们甚至有一个最大长度,正是我需要的。太棒了。我想我什至在很多年前读过关于双端队列的文章,但不知何故,它们并没有回到我的脑海中。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多