1: 计算1~100000之间所有素数和, 要求如下:
- 编写函数判断一个数字是否为素数,
- 使用内置函数sum()统计所有素数和。
- 对比1: 对比使用多进程和不使用多进程两种方法的速度。
- 对比2:对比开启4个多进程和开启10个多进程两种方法的速度。
import time
import math
import multiprocessing
from concurrent.futures import ThreadPoolExecutor
def isPrime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def pricessPool(count):
pool = multiprocessing.Pool(count)
is_prime = []
start_time = time.time()
for i in range(1,100000):
if pool.apply(isPrime,args=(i,))==True:
is_prime.append(i)
pool.close()
pool.join()
print('success,result = %d' %(sum(is_prime)))
print('运行时间为:%s' %(time.time() - start_time))
def notpricessPool():
is_prime = []
start_time = time.time()
for i in range(1,100000):
if isPrime(i) == True:
is_prime.append(i)
print('success,result = %d' % (sum(is_prime)))
print('运行时间为:%s' % (time.time() - start_time))
notpricessPool()
pricessPool(10)
pricessPool(4)
分别是不使用多进程与十个进程与四个进程的处理速度: