0

Pyro4 プロキシをインデックス可能にしようとしています。これをテストするために、http://pythonhosted.org/Pyro4/intro.html#simple-exampleから挨拶の例を取得し、それを変更しました。

サーバ:

import Pyro4

class Test(object):

    def __getitem__(self, index):
        return index

test = Test()
print test[1]
print test[100]


daemon = Pyro4.Daemon()
uri = daemon.register(test)


print("Ready. Object uri =", uri)
daemon.requestLoop()

クライアント:

import Pyro4

uri = input("What is the Pyro uri of the object? ").strip()

test = Pyro4.Proxy(uri)
print test.__getitem__(1)
print test.__getitem__(100)

print test[1]
print test[100]

[] 表記はサーバーでは機能しますが、クライアント プロキシでは機能しません。私は得る:

TypeError: 'Proxy' オブジェクトはインデックス作成をサポートしていません

しかし、__getitem__仕事をするために直接呼び出します。

4

2 に答える 2

1

これはおそらく Pyro プロキシに追加される可能性がありますが、実際には恐ろしい実行コードを促進する可能性があります。通常、オブジェクトのインデックス付けは、オブジェクトがある種のコレクションであり、おそらくそれを反復処理するために行われます。Pyro プロキシでこれを行うと、すべてのインデックス ルックアップがリモート呼び出しになるため、ひどいパフォーマンスが発生します。通常は、1 つのリモート呼び出しを使用して一度に反復処理するコレクションを取得し、結果のローカル オブジェクトを通常どおり反復処理する方が、はるかに高速で効率的です。YMMV もちろん状況次第です。

于 2015-11-13T23:35:41.393 に答える