![]() |
1
170
我会用
有一个
recipe
在文档中
|
![]() |
2
11
从列表头弹出会导致整个列表被复制,因此效率低下 您应该使用固定大小的列表/数组和在添加/删除项时在缓冲区中移动的索引。 |
![]() |
3
8
巨蟒的出界很慢。你也可以用numpy.roll代替 How do you rotate the numbers in an numpy array of shape (n,) or (n,1)? 在这个基准测试中,deque为448ms,numpy.roll为29ms。 http://scimusing.wordpress.com/2013/10/25/ring-buffers-in-pythonnumpy/ |
![]() |
4
6
基于
MoonCactus's answer
,这是一个
班级:
|
![]() |
5
5
可以使用deque类,但对于问题(平均值)的要求,这是我的解决方案:
|
![]() |
6
3
你也可以看到这个相当古老 Python recipe . 以下是我自己的numpy数组版本:
|
![]() |
7
3
虽然这里已经有很多好的答案,但我找不到任何直接比较所提到的选项的时间。因此,请在下面比较一下我的谦虚尝试。
仅用于测试目的,类可以在
注意,
在我的系统中,这会产生:
|
![]() |
8
2
这个不需要任何图书馆。它增加一个列表,然后按索引在其中循环。 占地面积非常小(没有库),它的运行速度至少是出列的两倍。这确实有助于计算移动平均值,但请注意,这些项目不会按上述年龄进行排序。
要获得平均值,例如:
结果:
这大约是出列时间的1/3。 |
![]() |
9
2
怎么样 the solution from the Python Cookbook ,包括当环缓冲区实例变满时对其重新分类吗?
学分:斯巴斯滕·凯姆 |
![]() |
10
1
我在做串行编程之前遇到过这个问题。就在一年多以前,我也找不到任何有效的实现,所以我最后写了 one as a C extension 而且也有 on pypi 在麻省理工学院的执照下。它是超基本的,只处理8位有符号字符的缓冲区,但是它的长度是灵活的,所以如果您需要字符以外的东西,可以在上面使用struct或其他东西。我现在通过谷歌搜索发现,现在有几个选择,所以你可能也想看看这些。 |
![]() |
11
0
最初的问题是:“ 有效率的 “圆形缓冲区。 根据所要求的效率,阿隆斯特林的回答似乎是绝对正确的。 使用在python中编程的专用类,并将时间处理与collections.deque进行比较,显示了deque的5.2倍加速! 下面是测试这个的非常简单的代码:
要将deque转换为列表,只需使用:
然后您将获得o(1)随机访问deque项。当然,只有在设置了deque一次之后,需要对它进行许多随机访问时,这才是有价值的。 |
|
12
0
你的回答不对。 圆形缓冲干线有两个原则 https://en.wikipedia.org/wiki/Circular_buffer )
您的代码如下:
让我们通过使用代码来考虑列表已满的情况:
现在我们附加6,列表更改为
列表中预期为1的项已更改其位置 您的代码是一个队列,而不是一个循环缓冲区。 巴斯基的回答,我认为是最有效的。 另外,一个循环缓冲区可以提高操作的性能。 添加项目。 |
|
13
0
这将相同的主体应用于一些用于保存最新文本消息的缓冲区。
|