的同一個實例我有使用multiprocessing
庫,我遇到,我希望不同的流程,創建一個類的不同實例,一個問題一個Python應用程序,但是,他們實際上是在創建相同的實例的類。就拿這個例子:蟒蛇過程產生
from multiprocessing import Process
from time import sleep
class Foo:
name = None
def get_foobar():
return Foo()
class MyProcess(Process):
def run(self):
print('process {} running in pid {}'.format(self.name, self.pid))
my_foo = get_foobar()
print('got foo {}'.format(id(my_foo)))
if my_foo.name is None:
my_foo.name = self.name.upper()
print("foo's name is {}".format(my_foo.name))
# do some work
sleep(3)
print('process {} running in pid {} done'.format(self.name, self.pid))
for _ in range(2):
p = MyProcess()
p.start()
我得到以下輸出:
process MyProcess-1 running in pid 65975
got foo 4322815784
foo's name is MYPROCESS-1
process MyProcess-2 running in pid 65976
got foo 4322815784
foo's name is MYPROCESS-2
process MyProcess-1 running in pid 65975 done
process MyProcess-2 running in pid 65976 done
我期待在第二過程中要有類的不同實例。 get_foobar()
如何能夠將相同的Foo
實例返回給每個進程?
編輯/ UPDATE: 我在OSX和Ubuntu的Python 3.5運行此。
嗯,我跑的代碼,我正常 –
得到不同的實例您正在使用什麼操作系統? – BrenBarn
我也跑的代碼,在這個問題得到了相同的實例一樣,在Python 2.7它給不同的情況下,在Ubuntu –