我使用Pyro实现了一个非常简单的客户端/服务器应用程序。虽然Pyro tips&tricks建议反对它,但我正在使用服务器将图像发送到客户端(未压缩的,准确的numpy数组)。它不必通过网络,一切都停留在localhost上,所以我不会看到问题。发生的事情是客户端比服务器慢一个数量级,任何想法为什么?
这里是代码:
服务器:
import numpy as np
import time
import Pyro.core
class DataProd(Pyro.core.ObjBase):
def __init__(self, batch_size):
print 'Loading data into memory'
self.all_imgs = np.load('data.npy')
Pyro.core.ObjBase.__init__(self)
def get_batch(self, batch_size=32, flip=False):
print 'getting 1 batch from PYRO'
s = time.time()
#process the images
print time.time()-s
return images
def main():
Pyro.core.initServer()
daemon=Pyro.core.Daemon()
uri=daemon.connect(DataProd(32),'dataprod')
print "The daemon runs on port:",daemon.port
print "The object's uri is:",uri
print "Starting request loop"
daemon.requestLoop()
if __name__ == '__main__':
main()
客户:
import Pyro.core
import time
data = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/dataprod")
while True:
s = time.time()
im = data.get_batch(32)
print time.time()-s
服务器打印:
getting 1 batch from PYRO
0.526908874512
getting 1 batch from PYRO
0.51292014122
getting 1 batch from PYRO
0.523808956146
getting 1 batch from PYRO
0.536481142044
getting 1 batch from PYRO
0.518028974533
客户:
4.93717813492
4.05996489525
3.40680289268
3.79327297211
3.99453115463
为什么两者之间存在1个数量级的差异?除了请求图像之外,客户端不做任何其他事情。
谢谢!