python中的多处理拒绝运行多个进程

时间:2017-08-27 18:17:59

标签: python multiprocessing python-multiprocessing

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核心上。

1 个答案:

答案 0 :(得分:0)

试试multiprocessing.pool' s ThreadPool。 它遵循类似于multiprocessing.Pool

的API

使用from multiprocessing.pool import ThreadPool导入

更多信息herethere