0
コードは以下Pyro4ピクルスシリアライザnumpyのアレイ
import numpy as np
import Pyro4
# set pickle serializer
Pyro4.config.SERIALIZERS_ACCEPTED = set(['pickle','json', 'marshal', 'serpent'])
@Pyro4.expose
class test(object):
def get_array(self):
return np.random.random((10,10))
def main():
# create a Pyro daemon
daemon = Pyro4.Daemon()
# register test instance
uri = daemon.register(test())
# print uri to connect to it in another console
print uri
# start the event loop of the server to wait for calls
daemon.requestLoop()
if __name__=="__main__":
main()
今別のコンソールを開き、テストを呼び出すことを試みるある
TypeError: don't know how to serialize class <type 'numpy.ndarray'>. Give it vars() or an appropriate __getstate__
次のタイプのエラーを返します例を以下に示します。
import Pyro4
Pyro4.config.SERIALIZERS_ACCEPTED = set(['pickle','json', 'marshal', 'serpent'])
# connect to URI which is printed above
# must be something like this 'PYRO:[email protected]:57495'
p = Pyro4.Proxy(URI)
p.get_array()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/Pyro4/core.py", line 171, in __call__
return self.__send(self.__name, args, kwargs)
File "/usr/local/lib/python2.7/site-packages/Pyro4/core.py", line 438, in _pyroInvoke
raise data
TypeError: don't know how to serialize class <type 'numpy.ndarray'>. Give it vars() or an appropriate __getstate
私はこれまでここにいましたが、コード内から設定を変更し、PYRO_SERIALIZERS_ACCEPTEDシステムのグローバル設定変数を変更しません。私は愚かな質問を申し訳ありませんpyroに新しいです。 – Cobry
すべての設定項目(ロギング関連を除く)は、環境変数またはコード変更の両方で設定できます。環境変数は、通常、システム全体ではなく、ユーザーごとであることに注意してください。とにかく、あなたはPyro4.config.SERIALIZER = 'pickle' –