|
发表于 2016-11-3 12:58:52
|
显示全部楼层
质数判别单线程和多线程的对比测试:
单线程:
- import concurrent.futures
- import math
- import time
- PRIMES = [
- 112272535095293,
- 112582705942171,
- 112272535095293,
- 115280095190773,
- 115797848077099,
- 1099726899285419]
- def is_prime(n):
- if n % 2 == 0:
- return False
- sqrt_n = int(math.floor(math.sqrt(n)))
- for i in range(3, sqrt_n + 1, 2):
- if n % i == 0:
- return False
- return True
- def main():
- for i in PRIMES:
- print('%d is prime: %s' % (i, is_prime(i)))
- if __name__ == '__main__':
- started = time.time()
- main()
- print(time.time()-started)
复制代码
输出结果:
112272535095293 is prime: True
112582705942171 is prime: True
112272535095293 is prime: True
115280095190773 is prime: True
115797848077099 is prime: True
1099726899285419 is prime: False
5.750274419784546
>>>
多线程:
- import concurrent.futures
- import math
- import time
- PRIMES = [
- 112272535095293,
- 112582705942171,
- 112272535095293,
- 115280095190773,
- 115797848077099,
- 1099726899285419]
- def is_prime(n):
- if n % 2 == 0:
- return False
- sqrt_n = int(math.floor(math.sqrt(n)))
- for i in range(3, sqrt_n + 1, 2):
- if n % i == 0:
- return False
- return True
- def main():
- with concurrent.futures.ProcessPoolExecutor() as executor:
- for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)):
- print('%d is prime: %s' % (number, prime))
- if __name__ == '__main__':
- start = time.time()
- main()
- print(time.time()-start)
复制代码
输出结果:
112272535095293 is prime: True
112582705942171 is prime: True
112272535095293 is prime: True
115280095190773 is prime: True
115797848077099 is prime: True
1099726899285419 is prime: False
3.6311471462249756
>>>
快了不是一点点啊 |
|