当前位置: 首页 > 面试题库 >

有效的循环缓冲区?

鲁俊友
2023-03-14
问题内容

我想在python中创建一个高效的循环缓冲区(目标是取缓冲区中整数值的平均值)。

这是使用列表收集值的有效方法吗?

def add_to_buffer( self, num ):
    self.mylist.pop( 0 )
    self.mylist.append( num )

什么会更有效(为什么)?


问题答案:

我会用collections.deque一个maxlenarg

>>> import collections
>>> d = collections.deque(maxlen=10)
>>> d
deque([], maxlen=10)
>>> for i in xrange(20):
...     d.append(i)
... 
>>> d
deque([10, 11, 12, 13, 14, 15, 16, 17, 18, 19], maxlen=10)

在文档中有一个与您想要的菜谱deque相似的菜谱。我断言它是最有效的,这完全取决于它是由C语言实现的,这是由一个熟练掌握了一流代码的技术人员组成的。



 类似资料:
  • 问题内容: 考虑几个并行运行的Web服务器实例。每个服务器都有对单个共享“状态保持器”的引用,该角色的作用是保留来自所有服务器的最新请求。 例如(): 在任何时间点,都可以从监视应用程序中调用“状态保持器”,该应用程序读取了最近的SLA报告请求。 在Java中实现这种生产者-消费者方案的最佳方法是什么,使Web服务器具有比SLA报告更高的优先级? CircularFifoBuffer似乎是容纳请求

  • 在循环队列的数组实现中,如果在第一个元素之前指向一个插槽,而在最后一个元素之后指向一个插槽,则会面临如何识别队列是满还是空的问题。 为了解决这个问题,我们要么使用计数器,要么在缓冲区中浪费一个空间。 我在想下面的方法。请纠正我的错误,如果没有请让我知道这是一个更好/更差的解决方案比以上。 null

  • 环型缓冲区是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。 构造环型缓冲区 var ringBuffer = new RingBufferStream(); 函数原型 RingBufferStream(int capacity = 8192, bool exposable = true); 参数 描述 capacity 环状缓冲区的最大容量,为2的次方。如:传入12,则

  • 环形缓冲区接口 结构体 struct   rt_ringbuffer   环形缓冲区控制块 更多...   枚举 函数 void  rt_ringbuffer_init (struct rt_ringbuffer *rb, rt_uint8_t *pool, rt_int16_t size)   初始化环形缓冲区   void  rt_ringbuffer_reset (struct rt_rin

  • 问题内容: 我有一个流时间序列,我有兴趣保留最后4个元素,这意味着我希望能够弹出第一个元素并将其添加到末尾。本质上我需要一个环形缓冲区。 哪个Java集合最适合此用途?向量? 问题答案: 考虑CircularFifoBuffer Apache的Common.Collections。与Queue不同,你不必维护基础集合的有限大小,只要达到极限就可以包装它。 由于以下属性,CircularFifoBu

  • 环形块状缓冲区接口 结构体 struct   rt_rbb_blk   rbb 中的块 更多...   struct   rt_rbb_blk_queue   块队列。这些块在队列中,其 buffer 地址是连续的 更多...   struct   rt_rbb   环形块状缓冲区,简称 rbb 更多...   枚举 函数 void  rt_rbb_init (rt_rbb_t rbb, rt_u