0
私は1つのdictプロキシを持つマネージャを持っています。私は別のプロセスからアクセスしたい。簡潔にするために、サンプルコードは1つのプロセスしか使用しませんが、(他のプロセスが最初のプロセスから作成されたかのように)直接参照していないと仮定します。 dict proxy dict1をtypeName 'd1'の下に登録するので、リモートからアクセスできます。私はマネージャーのレジストリをチェックし、そこにディクテーションプロキシを見ます。 しかし、私はd1を呼び出すことによってそれにアクセスしようとすると、私は、リモートからKeyErrorを取得します。私は自分のdictにアクセスするためのメソッドを作成することができますが、ドキュメントにしたがってdictプロキシに直接アクセスする方法がなければなりません(Python 2、16.6章)。Pythonマネージャのアクセス先からレジストリへ
from multiprocessing.managers import SyncManager
from sys import stderr
proxy = SyncManager()
proxy.start()
dict1 = proxy.dict({'k1': 'blah'})
proxy.register('d1', dict1)
# next line shows that d1 is bound method of manager
print >>stderr, 'd1 is', proxy.d1
# next line produces a KeyError
print 'The value of d1 is', proxy.d1()
ラン出力
d1 is <bound method SyncManager.d1 of <multiprocessing.managers.SyncManager object at 0x10925dd10>>
Traceback (most recent call last):
File "/Users/adriancepleanu/PycharmProjects/AFX/UIproxy.py", line 32, in <module>
print 'The value of d1 is', proxy.d1()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 667, in temp
token, exp = self._create(typeid, *args, **kwds)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 567, in _create
id, exposed = dispatch(conn, None, 'create', (typeid,)+args, kwds)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 105, in dispatch
raise convert_to_error(kind, result)
multiprocessing.managers.RemoteError:
---------------------------------------------------------------------------
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 207, in handle_request
result = func(c, *args, **kwds)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 380, in create
self.registry[typeid]
KeyError: 'd1'
---------------------------------------------------------------------------