擅长:python、mysql、java
<p>这个例子不起作用的原因是计数器的几个实例是分别创建和递增的。在</p>
<p>您需要为每个启动的进程创建一个共享计数器和锁,并对其进行适当初始化:</p>
<pre><code>import time
from multiprocessing import Pool, Value, Lock
import decimal
import random
number = Value('i', 0)
lock = Lock()
lists = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k']
def thefunction(listi):
time.sleep(decimal.Decimal(random.random()))
with lock:
number.value += 1
print time.strftime('%H:%M:%S'), number.value, listi
def initializer(*args):
global number, lock
number, lock = args
pool = Pool(4, initializer, (number, lock))
pool.map(thefunction, lists)
print number.value
</code></pre>