<p>我认为共享变量需要一个<a href="https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Value" rel="nofollow">multiprocessing.Value</a></p>
<pre><code>from multiprocessing import Process, Lock, Value
class myWorker:
def __init__(self, lock, driver, i):
self.idx=i
self.driver=driver
self.lock=lock
def run(self):
self.driver.updateHello(self.lock,self.idx)
class driver:
hello = Value("i",lock=True) # create shared variable of type int
hello.value = 0
def __init__(self):
self.lock=Lock()
def workerrun(self,lock, i):
worker1=myWorker(lock,self,i)
worker1.run()
def run(self):
D=[Process(target=self.workerrun,args=(self.lock,i)) for i in range(10)]
for d in D:
d.start()
for d in D:
d.join()
def updateHello(self,l,i):
with self.lock: # acquire lock
driver.hello.value += 1
print ("update from", i)
# release lock
if __name__=='__main__':
dr=driver()
dr.run()
print(driver.hello.value)
</code></pre>
<p>Ipython输出:</p>
<pre><code>if __name__=='__main__':
dr=driver()
dr.run()
print(driver.hello.value)
## End pasted text
('update from', 0)
('update from', 1)
('update from', 2)
('update from', 5)
('update from', 6)
('update from', 7)
('update from', 4)
('update from', 3)
('update from', 8)
('update from', 9)
10
</code></pre>