【发布时间】:2016-05-04 21:37:51
【问题描述】:
我创建了一个小代码 sn-p(原始代码要大得多),它调用一个创建对象的函数,但在一个进程池中:
import multiprocessing
class TestClass(object):
pass
def func():
obj = TestClass()
cpname = multiprocessing.current_process().name
print "{0}, Address: {1}".format(cpname, str(obj))
pool = multiprocessing.Pool(2)
results = [pool.apply_async(func) for _ in range(2)]
for res in results:
res.get()
pool.close()
pool.join()
当我运行这段代码时,我得到以下输出:
PoolWorker-1, Address: <__main__.TestClass object at 0x7f05d3fdad50>
PoolWorker-2, Address: <__main__.TestClass object at 0x7f05d3fdad50>
我不明白的是,为什么这些对象具有相同的地址,即使它们位于不同的进程中?
如何确保每个进程都创建自己的对象?
非常感谢您的帮助。
【问题讨论】: