[英]Understanding python multiprocessing: does code wait for all process to finish
我有一段代码,如下所示:
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
。
我该如何测试您的答案?
其余核心是否跳至2号线
没有。
我该如何测试您的答案?
如果对并行运行的代码有疑问,请添加sleep
。 一般而言,如果对代码有疑问,请添加print
。
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或其他值以进行进一步实验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.