Python设计&x27;s xdrlib模块

Python设计&x27;s xdrlib模块,python,class,xdr,Python,Class,Xdr,我最近开始使用Python的模块。我惊讶地发现,Packer和Unpacker是需要实例化的类,并且包含类似于reset和get\u buffer的方法。对Packer和Unpacker实例方法的调用会在缓冲区中累积数据,直到您使用它为止。标准用法似乎是为每个客户端创建一个Packer和一个Unpacker实例,但这不是线程安全的/ 我说我很惊讶,因为我只希望有一些函数将数据打包成字节,然后编写如下内容: mybuffer += pack_int(3) 或者拥有一个消息类(一个带有append

我最近开始使用Python的模块。我惊讶地发现,
Packer
Unpacker
是需要实例化的类,并且包含类似于
reset
get\u buffer
的方法。对
Packer
Unpacker
实例方法的调用会在缓冲区中累积数据,直到您使用它为止。标准用法似乎是为每个客户端创建一个Packer和一个Unpacker实例,但这不是线程安全的/

我说我很惊讶,因为我只希望有一些函数将数据打包成字节,然后编写如下内容:

mybuffer += pack_int(3)
或者拥有一个消息类(一个带有
append\u int
等方法的缓冲区),并在使用后处理消息实例


当前的设计似乎把持久性放在了错误的位置。是真的像这样,还是我遗漏了一些重要的特征?这种设计的基本原理是什么?

认为
x+=1
不是线程安全的。大概,如果
x+=1
不是线程安全的,
mybuffer+=pack\u int(3)
也不能是线程安全的。@unutbu:我很抱歉不清楚。我应该说他们使用它的方式很容易导致问题。您希望xdrlib生成消息。使用打包器,您不应该在完成上一条消息的构建之前就开始构建消息。对于函数或消息类,您并不真正关心这一点,因为每条消息都是一个独立的对象。