ProcessPoolExecutor vs ThreadPoolExecutor
from concurrent.futures import ProcessPoolExecutor, as_completed
import time
def prime_number1(num_list):
final_pr_list =[]
for num in range(2, num_list+1):
pr_list = []
for i in range(2,num+1):
if num%i == 0:
pr_list.append(num)
if len(pr_list)==1:
final_pr_list.append(num)
else:
pass
return final_pr_list
def prime_number2(num_list):
final_pr_list =[]
for num in range(2, num_list+1):
pr_list = []
for i in range(2,num+1):
if num%i == 0:
pr_list.append(num)
if len(pr_list)==1:
final_pr_list.append(num)
else:
pass
return final_pr_list
def fibonacci_series1(num):
fibo_list =[]
a,b = 0,1
for i in range(num+1):
c = a+b
a = b
b = c
fibo_list.append(c)
return fibo_list
def fibonacci_series2(num):
fibo_list =[]
a,b = 0,1
for i in range(num+1):
c = a+b
a = b
b = c
fibo_list.append(c)
return fibo_list
if __name__ == "__main__":
with ProcessPoolExecutor(max_workers=4) as executor:
stat_time = time.monotonic()
get_result = [executor.submit(prime_number1, 9999),
executor.submit(prime_number2, 9999),
executor.submit(fibonacci_series1, 9999),
executor.submit(fibonacci_series2, 9999)
]
for res in as_completed(get_result):
print(res.result())
end_time = time.monotonic()
print(end_time-stat_time)
###########################################
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
def prime_number1(num_list):
final_pr_list =[]
for num in range(2, num_list+1):
pr_list = []
for i in range(2,num+1):
if num%i == 0:
pr_list.append(num)
if len(pr_list)==1:
final_pr_list.append(num)
else:
pass
return final_pr_list
def prime_number2(num_list):
final_pr_list =[]
for num in range(2, num_list+1):
pr_list = []
for i in range(2,num+1):
if num%i == 0:
pr_list.append(num)
if len(pr_list)==1:
final_pr_list.append(num)
else:
pass
return final_pr_list
def fibonacci_series1(num):
fibo_list =[]
a,b = 0,1
for i in range(num+1):
c = a+b
a = b
b = c
fibo_list.append(c)
return fibo_list
def fibonacci_series2(num):
fibo_list =[]
a,b = 0,1
for i in range(num+1):
c = a+b
a = b
b = c
fibo_list.append(c)
return fibo_list
with ThreadPoolExecutor(max_workers=4) as executor:
stat_time = time.monotonic()
get_result = [executor.submit(prime_number1, 9999),
executor.submit(prime_number2, 9999),
executor.submit(fibonacci_series1, 9999),
executor.submit(fibonacci_series2, 9999)
]
for res in as_completed(get_result):
print(res.result())
end_time = time.monotonic()
print(end_time-stat_time)
Comments