我试图通过一个简单而简单的例子来理解两个方法是如何并行执行的。问题在于执行结果。我观察到执行是按顺序进行的,方法threeCheck()
在调用sevenCheck()
之前被完整地执行。
但我的理解是,这两种方法将并行执行。你知道吗
threeCheck()
是一种检查数字是否可被3整除的方法sevenCheck()
是一种检查数字是否可被7整除的方法我看到传入threeCheck()
方法的输入正在并行处理。如果我们遵循序列,数组中可被3整除的数字是:
84, 66, 60, 66, 87, 99, 42, .......
但是,当我们观察执行结果时,对于这些第一个结果,序列显示的是相反的
import multiprocessing as mp
import time
import random
def threeCheck(inputParam):
if inputParam % 3 == 0:
duration = random.randint(0,6)
print("3 INPUT = {0} and Sleep = {1}".format(inputParam, duration))
time.sleep(duration)
return inputParam
def sevenCheck(inputParam):
if inputParam % 7 == 0:
duration = random.randint(0,6)
print("7 INPUT = {0} and Sleep = {1}".format(inputParam, duration))
time.sleep(duration)
return inputParam
def main():
cpuCount = mp.cpu_count()
pool = mp.Pool(cpuCount)
inputValues = []
for i in range(50):
inputValues.append(random.randint(0,100))
resultThree = pool.map(threeCheck, inputValues)
resultSeven = pool.map(sevenCheck, inputValues)
print("INPUT = ", inputValues)
print("CPU = ", cpuCount)
print("RESULT 3 = ", resultThree)
print("RESULT 7 = ", resultSeven)
if __name__ == "__main__":
main()
OUTPUT:
3 INPUT = 84 and Sleep = 5
3 INPUT = 66 and Sleep = 2
3 INPUT = 60 and Sleep = 1
3 INPUT = 99 and Sleep = 3
3 INPUT = 66 and Sleep = 3
3 INPUT = 42 and Sleep = 5
3 INPUT = 12 and Sleep = 1
3 INPUT = 87 and Sleep = 6
3 INPUT = 57 and Sleep = 5
3 INPUT = 42 and Sleep = 3
3 INPUT = 30 and Sleep = 2
3 INPUT = 63 and Sleep = 0
3 INPUT = 42 and Sleep = 6
3 INPUT = 24 and Sleep = 2
3 INPUT = 21 and Sleep = 6
3 INPUT = 30 and Sleep = 4
3 INPUT = 27 and Sleep = 0
7 INPUT = 7 and Sleep = 1
7 INPUT = 84 and Sleep = 6
7 INPUT = 42 and Sleep = 6
7 INPUT = 28 and Sleep = 1
7 INPUT = 21 and Sleep = 6
7 INPUT = 42 and Sleep = 5
7 INPUT = 63 and Sleep = 3
7 INPUT = 91 and Sleep = 5
7 INPUT = 42 and Sleep = 6
INPUT = [7, 95, 25, 19, 59, 82, 47, 68, 20, 76, 84, 8, 88, 29, 1, 66, 60, 66, 87, 25, 23, 80, 52, 99, 65, 65, 25, 42, 12, 38, 28, 88, 57, 21, 27, 40, 42, 38, 31, 91, 30, 68, 22, 24, 63, 42, 64, 17, 65, 30]
CPU = 4
RESULT 3 = [None, None, None, None, None, None, None, None, None, None, 84, None, None, None, None, 66, 60, 66, 87, None, None, None, None, 99, None, None, None, 42, 12, None, None, None, 57, 21, 27, None, 42, None, None, None, 30, None, None, 24, 63, 42, None, None, None, 30]
...
我肯定我错过了一些东西。。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐