Added concurrency-futures.py

This commit is contained in:
Lerking
2018-03-08 12:54:06 +01:00
committed by GitHub
parent 3613c79915
commit 30c2aa3605

50
concurrency-futures.py Normal file
View 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))