看看下面的代码:
from pathos.multiprocessing import ProcessingPool
def f(a,b):
return a*b
def caller(A,B):
print("I'm Mr. Meseeks!")
if __name__=='__main__':
pool = ProcessingPool()
res = pool.map(f,A,B)
print(res)
print("Look at me!")
caller([1,2,3,4],[5,6,7,8])
在这里,我打算从功能f
同时调用功能caller
。由于this的原因而添加了if __name__=='__main__':
行。
由于pool.map
仅调用f
,因此,仅那个部分代码应运行4次(因为有4个输入)。因此,预期输出为:
I'm Mr. Meseeks!
[5,12,21,32]
Look at me!
但是,出乎意料的是,结果是:
I'm Mr. Meseeks!
I'm Mr. Meseeks!
Look at me!
I'm Mr. Meseeks!
Look at me!
I'm Mr. Meseeks!
Look at me!
I'm Mr. Meseeks!
Look at me!
[5, 12, 21, 32]
Look at me!
为什么不打算同时运行的代码会多次执行?为什么要精确5次?输入的数量是4,那么这5来自哪里?