Advertisement
MaxiBarometer

Primes multiprocessing

Mar 15th, 2021
604
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.42 KB | None | 0 0
  1. import time
  2. import sys
  3. from multiprocessing import Pool
  4. import argparse
  5.  
  6. #Start and end numbers
  7. start_number = 1
  8. end_number = 10000
  9.  
  10.  
  11. parser = argparse.ArgumentParser()
  12. parser.add_argument('-e', '--end', default=10000, type=int, help='End Number')
  13. args = parser.parse_args()
  14. end_number = args.end
  15.  
  16. #Record the test start time
  17. start = time.time()
  18.  
  19. #Create variable to store the prime numbers and a counter
  20. primes = []
  21.  
  22. #Loop through each number, then through the factors to identify prime numbers
  23.  
  24. r = range(start_number, end_number, 1)
  25.  
  26. def isPrime(num):
  27.     for div_number in range(2, num):
  28.         if num % div_number == 0:
  29.             return False
  30.     return True
  31.  
  32. with Pool(24) as p:
  33.     primes = [c for c, keep in zip(r, p.map(isPrime, r)) if keep]
  34.  
  35. '''
  36. for candidate_number in range(start_number, end_number, 1):
  37.    found_prime = True
  38.    for div_number in range(2, candidate_number):
  39.        if candidate_number % div_number == 0:
  40.            found_prime = False
  41.            break
  42.    if found_prime:
  43.        primes.append(candidate_number)
  44.        noPrimes += 1
  45. '''
  46.  
  47. #Once all numbers have been searched, stop the timer
  48. end = round(time.time() - start, 2)
  49.  
  50. #Display the results, uncomment the last to list the prime numbers found
  51. print('Find all primes up to: ' + str(end_number))
  52. print('Time elapsed: ' + str(end) + ' seconds')
  53. print('Number of primes found ' + str(len(primes)))
  54. #print(primes)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement