1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from __future__ import with_statement
- import math
- import time
- import sys
- from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
- PRIMES = [
- 112272535095293,
- 112582705942171,
- 112272535095293,
- 115280095190773,
- 115797848077099,
- 117450548693743,
- 993960000099397]
- 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 sequential():
- return list(map(is_prime, PRIMES))
- def with_process_pool_executor():
- with ProcessPoolExecutor(10) as executor:
- return list(executor.map(is_prime, PRIMES))
- def with_thread_pool_executor():
- with ThreadPoolExecutor(10) as executor:
- return list(executor.map(is_prime, PRIMES))
- def main():
- for name, fn in [('sequential', sequential),
- ('processes', with_process_pool_executor),
- ('threads', with_thread_pool_executor)]:
- sys.stdout.write('%s: ' % name.ljust(12))
- start = time.time()
- if fn() != [True] * len(PRIMES):
- sys.stdout.write('failed\n')
- else:
- sys.stdout.write('%.2f seconds\n' % (time.time() - start))
- if __name__ == '__main__':
- main()
|