Я только начал использовать сервер XMLRPC и клиентов для подключения моего малинового pi к компьютеру.Значение возвращаемого значения Python SimpleXMLRPCServer
Мой сервер выглядит следующим образом:
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
import numpy as np
allow_reuse_address = True
ip = '...'
port = 8000
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
server = SimpleXMLRPCServer((ip, port), requestHandler=RequestHandler)
server.register_introspection_functions()
def Spectrum():
data = ... # it's a numpy array
return data
server.register_function(Spectrum, 'Spectrum')
server.serve_forever()
Мой клиент выглядит следующим образом:
#!/usr/bin/env python
import xmlrpclib
import numpy as np
[...]
def getSpectrum():
try:
s = xmlrpclib.ServerProxy(server)
v = s.Spectrum()
print v
except:
print "no data"
Мой сервер работает и моя тестовая функция показывает, что она работает. Но моя функция getSpectrum() всегда выдает исключение. Я понял, что он работает нормально, если мое возвращаемое значение с плавающей точкой вместо Numpy массива:
def Spectrum():
data = ... # it's a numpy array
return float(data[0][0])
Я не имею ни малейшего представления, что это неправильно, но я думаю, что это должно быть возможно вернуть Numpy массива. Вы знаете, как это исправить?
Ну, это очень простой рабочий стол! Требуется немного времени для преобразования в список и обратно в массив numpy, но он меньше 500 мс. Спасибо, что помогли быстро. – schlenzmeister