Python 环形缓冲区和队列中同时弹出-推送的区别?
Python difference between ring buffer and simultaneous pop-push in queue?
我正在开发一个应用程序,该应用程序的一部分需要从数据流中保存最新的 n 个值,以便每隔一段时间一次处理整个流,覆盖最旧的值,我熟悉环形缓冲区在 C 中用于低内存约束场景。
然而,在 python 中,此实现的优势是什么,而不是仅具有队列对象并且在每次插入数据时仅执行 pop() 和 push()。这种方法是否存在内存漏洞?
在任何语言中,环形缓冲区实现都具有显着的性能优势:添加或删除元素时不会移动任何数据,而且存储这些元素的内存是连续的。
在 python 中,您可以将 collections.deque
与 maxlen
参数一起使用,以获得相同的行为和性能。仍然使用普通列表,它会相当快。
内存漏洞是什么意思?
我正在开发一个应用程序,该应用程序的一部分需要从数据流中保存最新的 n 个值,以便每隔一段时间一次处理整个流,覆盖最旧的值,我熟悉环形缓冲区在 C 中用于低内存约束场景。
然而,在 python 中,此实现的优势是什么,而不是仅具有队列对象并且在每次插入数据时仅执行 pop() 和 push()。这种方法是否存在内存漏洞?
在任何语言中,环形缓冲区实现都具有显着的性能优势:添加或删除元素时不会移动任何数据,而且存储这些元素的内存是连续的。
在 python 中,您可以将 collections.deque
与 maxlen
参数一起使用,以获得相同的行为和性能。仍然使用普通列表,它会相当快。
内存漏洞是什么意思?