サイズが特定のしきい値を超えたときに、Pyro4 サーバー (バージョン 4.39、serializer= pickle) から単純な numpy 配列を取得する際に問題があります。サーバーはリクエストを処理して返信しますが、クライアントはハングしたままです
コードは以下のとおりです。
サーバーコード:
import numpy as np, Pyro4
class U(object):
def __init__(self):
self.Data = np.arange(10000000).reshape(200,50000)
print self.Data.shape
def get(self,name):
print '%s Requested' % name
return self.Data
def run():
Uni = U()
daemon = Pyro4.Daemon(host='localhost')
ns = Pyro4.locateNS()
uri = daemon.register(Uni)
ns.register("test",uri)
print 'Up and waiting ...'
daemon.requestLoop()
if __name__ == '__main__':
run()
クライアントコード:
import Pyro4
ns = Pyro4.locateNS()
uri = ns.lookup('test')
U=Pyro4.Proxy(uri)
Data = U.get('Data')
サーバー出力: (200, 50000) アップおよび待機中 ... データが要求されました
そのため、Pyro サーバーはクライアントからのリクエストを処理してデータを返しているように見えますが、クライアントはそれを取得せず、メッセージの受信を無期限に待機したままになります。
PS: - 小さいサイズの配列 (200,5000) に対して同じコードが機能します。
何が問題なのか考えている人はいますか?
あなたの助けは大歓迎です、