Added concurrency-futures.py
This commit is contained in:
50
concurrency-futures.py
Normal file
50
concurrency-futures.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import concurrent.futures
|
||||
import time
|
||||
import multiprocessing
|
||||
|
||||
num_cores = multiprocessing.cpu_count()
|
||||
|
||||
def is_prime(num):
|
||||
if num <= 1:
|
||||
return False
|
||||
elif num <= 3:
|
||||
return True
|
||||
elif num%2 == 0 or num%3 == 0:
|
||||
return False
|
||||
i = 5
|
||||
while i*i <= num:
|
||||
if num%i == 0 or num%(i+2) == 0:
|
||||
return False
|
||||
i += 6
|
||||
return True
|
||||
|
||||
def find_sum(num):
|
||||
sum_of_primes = 0
|
||||
|
||||
ix = 2
|
||||
|
||||
while ix <= num:
|
||||
if is_prime(ix):
|
||||
sum_of_primes += ix
|
||||
ix += 1
|
||||
print("{} : Sum = {}".format(num, sum_of_primes))
|
||||
return sum_of_primes
|
||||
|
||||
def sum_primes_thread(nums):
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers = num_cores) as executor:
|
||||
executor.map(find_sum, nums)
|
||||
|
||||
def sum_primes_process(nums):
|
||||
with concurrent.futures.ProcessPoolExecutor(max_workers = num_cores) as executor:
|
||||
executor.map(find_sum, nums)
|
||||
|
||||
if __name__ == '__main__':
|
||||
nums = [1000000, 900000, 800000, 700000, 600000, 500000, 400000, 300000, 200000, 100000]
|
||||
print("Using multithreading (num_threads = num_cores):")
|
||||
start = time.time()
|
||||
sum_primes_thread(nums)
|
||||
print("Time taken = {0:.5f}".format(time.time() - start))
|
||||
print("Using multiprocessing (num_processes = num_cores):")
|
||||
start = time.time()
|
||||
sum_primes_process(nums)
|
||||
print("Time taken = {0:.5f}".format(time.time() - start))
|
Reference in New Issue
Block a user