我正在运行一个简单的 Thrift 服务器(http://thrift.apache.org/)作为 Python(服务器)和 Haskell(客户端)之间的跨语言平台。唯一需要发送的数据结构是双精度的 3 元组,因此服务器/客户端实现也非常简单 - 只需遵循教程即可。
然而,它真的,真的很慢!当我需要大约 0.1 秒或更低的时间时,每个服务器响应的响应时间约为 0.5 秒。
有人对如何加快速度有任何想法吗?您可以在下面看到我的简单服务器实现:
1 import sys
2
3 from vision import Vision
4 from vision.ttypes import *
5
6 from thrift.transport import TSocket
7 from thrift.transport import TTransport
8 from thrift.protocol import TBinaryProtocol
9 from thrift.protocol.TBinaryProtocol import TBinaryProtocolAccelerated
10 from thrift.server import TServer
11
12 class VisionHandler:
13 def observe(self):
14 ret = Position()
15 ret.x,ret.y,ret.z = (1,2,3)
16 return ret
17
18 ret = Position()
20 handler = VisionHandler()
21 processor = Vision.Processor(handler)
22 transport = TSocket.TServerSocket(port=9090)
23 tfactory = TTransport.TBufferedTransportFactory()
24 pfactory = TBinaryProtocol.TBinaryProtocolFactory()
25
26 server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
27
28 print 'Starting the vision server...'
29 server.serve()
30 print 'done.'
客户端只需通过运行查询该服务器
36 client = do
37 handle <- hOpen ("localhost", PortNumber 9090)
38 let binProto = BinaryProtocol handle
39 return (binProto, binProto)
进而
res <- Client.observe =<< client
据我所知,这都是非常标准的!怎么这么慢??
谢谢!