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