我对 Python 很陌生,因此可能会问一个简单的问题。
我正在用 Python 编写多进程代码:
from multiprocessing import Process
from multiprocessing import Queue
class myClass(object):
def __init__(self):
self.__i = 0
self.__name = 'rob'
return
def target_func(self, name, q):
self.__name = name
print 'Hello', self.__name
self.__i += 1
print self.__i
q.put([self.__i, self.__name])
return
def name(self):
return self.__name
def i(self):
return self.__i
if __name__ == '__main__':
mc = myClass()
q = Queue()
p = Process(target = mc.target_func, args = ('bob', q,))
p.start()
ret = q.get()
p.join()
p2 = Process(target = mc.target_func, args = ('tom', q,))
p2.start()
ret = q.get()
p2.join()
我希望打印出来的应该是
Hello bob
1
Hello tom
2
但实际上,打印出来的是
Hello bob
1
Hello tom
1 <------------------ Why it's not 2?
我可以知道我错了吗?
非常感谢。