From 30c2aa3605717ec6d8dfb52857a70a007858e7e5 Mon Sep 17 00:00:00 2001 From: Lerking <33354709+Lerking@users.noreply.github.com> Date: Thu, 8 Mar 2018 12:54:06 +0100 Subject: [PATCH] Added concurrency-futures.py --- concurrency-futures.py | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 concurrency-futures.py diff --git a/concurrency-futures.py b/concurrency-futures.py new file mode 100644 index 0000000..d253ab7 --- /dev/null +++ b/concurrency-futures.py @@ -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)) \ No newline at end of file