我试图在 multiprocessing.pool.map() 调用的函数中按顺序递增一个数字。当我运行以下代码时,我得到的数字增加了与每个数字的池相同的次数。
import time
import multiprocessing
import decimal
import random
lists = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k']
def thefunction(listi):
global number
number += 1
time.sleep(decimal.Decimal(random.random()))
print time.strftime('%H:%M:%S'), number, listi
number = 0
pool = multiprocessing.Pool(4)
pool.map(thefunction, lists)
print number
结果像这样打印出来
01:01:28 1 b
01:01:28 2 e
01:01:28 1 a
01:01:28 1 c
01:01:28 1 d
01:01:28 2 h
01:01:29 2 i
01:01:29 2 g
01:01:29 3 f
01:01:29 3 j
01:01:29 3 k
0
如何正确增加数字?
(time.sleep(decimal.Decimal(random.random())) 仅用于停止脚本打印到同一行)