import multiprocessing as mp
#error example 1
def mpadd1():
def add(args):
a, b = args
print(a + b)
pool = mp.Pool()
args = [(i, 10*i) for i in range(5)]
print(args)
pool.map_async(add, args)
# for i in range(5):
# args=(i, 10 * i)
# pool.apply_async(add, (args,))
pool.close()
pool.join()
#error example 2
def mpadd2():
def add(args):
a, b = args
print(a + b)
def mpadd():
pool = mp.Pool()
args = [(i, 10*i) for i in range(5)]
print(args)
pool.map_async(add, args)
# for i in range(5):
# args=(i, 10 * i)
# pool.apply_async(add, (args,))
pool.close()
pool.join()
mpadd()
#error example 3
def mpadd3():
# correct example
def add(args):
a, b = args
print(a + b)
def mpadd_():
def mpadd():
pool = mp.Pool()
args = [(i, 10*i) for i in range(5)]
print(args)
pool.map_async(add, args)
# for i in range(5):
# args=(i, 10 * i)
# pool.apply_async(add, (args,))
pool.close()
pool.join()
mpadd()
mpadd_()
# correct example
def add(args):
a, b = args
print(a + b)
def mpadd4():
def mpadd():
pool = mp.Pool()
args = [(i, 10*i) for i in range(5)]
print(args)
pool.map_async(add, args)
# for i in range(5):
# args=(i, 10 * i)
# pool.apply_async(add, (args,))
pool.close()
pool.join()
mpadd()
if __name__ == "__main__":
mpadd4()
运行上述例子只有第四个能正确输出:
[(0, 0), (1, 10), (2, 20), (3, 30), (4, 40)]
0
11
22
33
44
以此说明执行并行的基函数(我这样称呼,在为add())要独立于进程执行的模块外