我最近遇到了一个奇怪的问题,希望这里有人能帮助我。我在 Ubuntu12.04 中使用 Python2.7,python 和 OS 都是 64 位的。
在我的代码中,我需要不断地将传入的数据流附加到一个字节数组中,我使用 self.data += incomingdata 来实现这一点,其中传入数据是我从硬件设备接收到的数据。然后我会稍后解压字节数组来解析接收到的数据。追加和解析操作都受锁保护。
这里的问题是,当我使用“+=”附加字节流时,数据似乎在某些点被损坏(不会始终如一地发生)。没有内存使用错误,没有溢出等。我监控了程序的内存使用情况,看起来不错。
然后,当我将“+=”更改为 cStringIO.write 以实现附加操作时,完全没有问题,尽管它似乎比“+=”操作慢。
谁能告诉我当 cStringIo.write 和 "+=" 用于对字节流进行操作时,它们之间的确切区别是什么?“+=”操作会导致任何潜在问题吗?