我正在嘗試使用processing.Manager在進程(processing.Manager.list,processing.Manager.dict,...)之間共享數據。但是,當我使用它,對象是重複的:使用processing.Manager時對象是否重複?
from multiprocessing import Process, Manager
def manipulate_in_process(objects):
objs = []
for obj in objects:
objs.append(obj)
print('foo objs', objs)
def do_in_process(objects):
print('objects', objects)
manipulate_in_process(objects)
if __name__ == '__main__':
manager = Manager()
objects = [object(), object()]
print('main objects', objects)
shared_objects = manager.list(objects)
process = Process(target=do_in_process, args=(shared_objects,))
process.start()
process.join()
print('finish')
輸出:使用時
main objects [<object object at 0xb72a64a8>, <object object at 0xb72a64b0>]
objects [<object object at 0xb72a64a8>, <object object at 0xb72a64b0>]
foo objs [<object object at 0xb72a64e8>, <object object at 0xb72a64c0>]
finish
Shareds對象是重複的:0xb72a64a8 = 0xb72a64e8。
- 我做錯了嗎?
- 爲什麼這些對象是重複的?
- 如何使用processing.Manager.list/dict/etc的對象?
這聽起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你究竟想在這裏做什麼?你顯然不只是共享對象來打印他們的ID。無論你想做什麼都可能是可行的,或者甚至是容易的,但是如果不知道它是什麼,就很難猜測。 – abarnert 2014-11-24 21:33:34