Python 提高xmlrpclib的速度

Python 提高xmlrpclib的速度,python,xmlrpclib,Python,Xmlrpclib,我使用的设备本质上是一个黑匣子,唯一已知的通信方法是XML-RPC。它适用于大多数需要,除了我需要在两个命令之后非常快地执行两个命令。由于开销和等待RPC响应,这并不像期望的那么快 我的主要问题是,如何减少这种开销,使这种功能成为可能?我知道显而易见的解决方案是抛弃XML-RPC,但我认为这对于这个设备是不可能的,因为我无法控制从“服务器”实现任何其他协议。这也使得不可能进行多调用,因为我无法为多调用添加有效的指令。多呼叫是否必须在服务器端实现?例如,如果服务器已经实现了method1()、me

我使用的设备本质上是一个黑匣子,唯一已知的通信方法是XML-RPC。它适用于大多数需要,除了我需要在两个命令之后非常快地执行两个命令。由于开销和等待RPC响应,这并不像期望的那么快

我的主要问题是,如何减少这种开销,使这种功能成为可能?我知道显而易见的解决方案是抛弃XML-RPC,但我认为这对于这个设备是不可能的,因为我无法控制从“服务器”实现任何其他协议。这也使得不可能进行多调用,因为我无法为多调用添加有效的指令。多呼叫是否必须在服务器端实现?例如,如果服务器已经实现了method1()、method2()和method3(),那么这段代码是否应该在一个应答中执行它们?到目前为止,我的测试中假设没有,正如我需要在服务器端初始化命令的示例所示

server=xmlrpclib.ServerProxy(serverURL)
multicall=xmlrpclib.MultiCall(server)
multicall.method1()
multicall.method2()
mutlicall.method3()
multicall()

另外,通过查看xmlrpclib的源代码,我看到了对“FastParser”的引用,而不是对使用的默认解析器的引用。但是,我无法确定如何在默认情况下启用此解析器。此外,还提到它一次解析一个字符。我相信这是相关的,但同样,不知道如何更改此设置。

除非请求或响应的批量非常大,否则更改解析器不太可能影响周转时间(因为CPU比网络快得多)

如果可能的话,您可能需要考虑在不等待第一个响应的情况下向设备发送多个命令。如果设备可以一次处理多个请求,那么这可能是有益的。即使设备仅按顺序处理请求,您仍然可以让下一个请求在设备上等待,以便在处理前一个请求后不会出现延迟。如果设备以这种方式序列化请求,那么这将是您所能做的最好的事情