Python使用多进程批量判断素数

2016-12-05 董付国 Python小屋 Python小屋

代码功能:使用进程池判断素数,统计100000000以内的素数个数。


from multiprocessing import Pool


def isPrime(n):

    if n<2:

        #非素数返回0,不统计

        return 0

    if n==2:

        #素数返回1,方便统计

        return 1

    #位运算,偶数为非素数,不再判断

    if not n&1:

        return 0

    for i in range(3, int(n**0.5)+1, 2):

        if n%i == 0:

            return 0

    return 1


if __name__ == '__main__':

    #最多5个进程同时工作

    with Pool(5) as p:

        print(sum(p.map(isPrime, range(100000000))))