繁体   English   中英

了解python多重处理:代码是否等待所有过程完成

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM