import random
import time
import multiprocessing
import sys
start = time.time()
numbers1 = []
def NumGenerator(NumbersArray):
while NumberCheck(NumbersArray):
number = random.randint(0,100)
NumbersArray.append(number)
end = time.time()
print(end-start)
print('average is: ' + str(sum(NumbersArray) / len(NumbersArray)))
print(str(NumbersArray).replace("[", "").replace("]", ""))
sys.exit()
def NumberCheck(NumbersArray):
# Checks if the average of the array is 50
if NumbersArray:
if sum(NumbersArray)/len(NumbersArray) != 50:
return True
else: return False
else: return True
process1 = multiprocessing.Process(target=NumGenerator, args=(numbers1,))
process2 = multiprocessing.Process(target=NumGenerator, args=(numbers1,))
process3 = multiprocessing.Process(target=NumGenerator, args=(numbers1,))
process4 = multiprocessing.Process(target=NumGenerator, args=(numbers1,))
process1.start()
process2.start()
process3.start()
process4.start()
process1.join()
process2.join()
process3.join()
process4.join()
这应该在4个线程上运行,并生成0到100之间的随机数,并将它们添加到一个数组,直到该数组的平均值为50.目前它只执行第二部分但只在一个CPU核心上。
答案 0 :(得分:0)
试试multiprocessing.pool
' s ThreadPool
。
它遵循类似于multiprocessing.Pool
使用from multiprocessing.pool import ThreadPool
导入