我有一段代码如下:
Data = [1, 2, 3, 4, 5]
def Fn2(obj):
return 2*obj
p = Pool(multiprocessing.cpu_count())
valueList = p.map(Fn2, Data) #---question Line 1
valueList = 2*valueList #--question Line 2
在Line 1
,处理器返回的值存储在valueList
中。我的电脑上有8个核心。最初将作业分配给所有核心。当让我们说8个核心时,5个核心可以释放。其余核心是否会跳转到Line 2
或等待所有核心完成作业并填满valueList
,然后继续Line 2
。
如何测试答案?
答案 0 :(得分:1)
其余核心是否跳转到第2行
没有
如何测试答案?
如果对并行运行的代码存在疑问,请添加sleep
s。如果对一般代码有疑问,请添加print
s。
import multiprocessing
from time import sleep
from multiprocess import Pool
Data = [1, 2, 3, 4, 5]
def Fn2(obj):
print(obj)
sleep(2)
return 2 * obj
p = Pool(multiprocessing.cpu_count())
valueList = p.map(Fn2, Data) # ---question Line 1
print(valueList)
valueList = 2 * valueList # --question Line 2
这给出了以下输出:
1
2
3
4
5
[2, 4, 6, 8, 10]
根据时间安排,应该清楚发生了什么。尝试将池大小调整为3或其他东西以进一步试验。