11

次のように定義された 2 つのネットワーク バッファがあります。

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。不足しているバイトはどうなりますか? これがどのように機能するか、またはバッファ間でデータを移動する方法を誰かが説明できますか?

ありがとう。

4

1 に答える 1

12

私のコンピューターでは、次の

buffer1[:] = buffer2

4KB のバッファを 400 ナノ秒未満でコピーします。つまり、1 秒あたり 250 万回のコピーを実行できます。

これはあなたのニーズに十分な速さですか?

編集:buffer2が より短く、ターゲット バッファーの残りの部分を変更せずにbuffer1の特定の位置にその内容をコピーする場合は、次を使用できます。buffer1

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

同様に、右側のスライスを使用して、 の一部のみをコピーできますbuffer2

于 2012-05-17T10:26:27.627 に答える