最近奇妙な問題に遭遇しました。誰かが私を助けてくれることを願っています。Ubuntu12.04 で Python2.7 を使用しています。Python と OS は両方とも 64 ビットです。
私のコードでは、受信データ ストリームをバイト配列に追加し続ける必要があります。これを実装するには、self.data += incomingdata を使用します。ここで、incomingdata はハードウェア デバイスから受信したデータです。次に、しばらくしてからバイト配列をアンパックして、受信したデータを解析します。追加操作と解析操作はすべてロックで保護されています。
ここでの問題は、"+=" を使用してバイト ストリームを追加すると、データがいくつかの時点で破損しているように見えることです (一貫して発生するわけではありません)。メモリ使用量のエラー、オーバーフローなどはありません。プログラムのメモリ使用量を監視しましたが、良さそうです。
次に、「+=」を cStringIO.write に変更して追加操作を実装すると、「+=」操作よりも遅いように見えますが、まったく問題ありません。
cStringIo.write と "+=" がバイト ストリームの操作に使用されている場合の正確な違いは何ですか? 「+=」操作は潜在的な問題を引き起こしますか?