如何复制python bytearray缓冲区?

时间:2012-05-17 10:22:45

标签: python bytearray

我有两个网络缓冲区定义为:

buffer1 = bytearray(4096)
buffer2 = bytearray(4096)

在不分配额外内存的情况下,将内容从buffer2移至buffer1的最快方法是什么?

天真的方式是:

for i in xrange(4096):
    buffer1[i] = buffer2[i]

显然,如果我buffer1[:]=buffer2[:] python移动内容,但我不是100%肯定它,因为如果我这样做:

a = bytearray([0,0,0])
b = bytearray([1,1])
a[:]=b[:]

然后len(a)=2。丢失的字节会发生什么?任何人都可以解释这是如何工作的或如何在缓冲区之间移动数据?

感谢。

1 个答案:

答案 0 :(得分:7)

在我的电脑上,以下

buffer1[:] = buffer2

在400纳秒内复制4KB缓冲区。换句话说,你每秒可以做250万个这样的副本。

这是否足以满足您的需求?

修改:如果buffer2短于buffer1,并且您希望将其内容复制到buffer1 中的特定位置而不更改其余的目标缓冲区,您可以使用以下内容:

buffer1[pos:pos+len(buffer2)] = buffer2

同样,您可以在右侧使用切片仅复制buffer2的一部分。