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