我有一小段代码,用 python 编写,它有一个 Generate 类,它在调用时返回下一个数字。
class Generate:
def iter(self):
self.next1 = 1
return self
def next(self):
self.curr = self.next1
self.next1 += 1
return self.curr
def generateNos():
for i in xrange(3):
print g.next()
g = Generate().iter()
generateNos()
generateNos()
还有一个函数 generateNos,它只生成 3 个 Nos。因此,当我如下调用此函数两次时,我得到的输出为:- 1 2 3 4 5 6
现在,当我生成两个调用此 generateNos() 的进程时,我得到的输出为:- 1 2 3 1 2 3
相同的代码是: -
from multiprocessing import Process, Manager
class Generate:
def iter(self):
self.next1 = 1
return self
def next(self):
self.curr = self.next1
self.next1 += 1
return self.curr
def generateNos():
for i in xrange(3):
print g.next()
g = Generate().iter()
p1 = Process(target = generateNos)
p2 = Process(target = generateNos)
p1.start()
p1.join()
p2.start()
p2.join()
现在看来这个 Generate 类在子进程中再次重新初始化,这是我不想要的。我怎样才能避免这种情况?
想要与一次又一次调用 generateNos 相同的行为。
任何 hack,以便 Generate() 对象“g = Generate().iter()”不会在子进程中再次被调用,它应该只在父进程中调用一次。