I have a folowing problem. i would like to run a simple foo function on multiple CPUs and save computational time. I am afraid that my code does the opposite – it runs foo multiple times.
Here is my code:
<code>
from itertools import product
all_combinations = []
for cas in range(3):
target_sum = 12
combinations = product(range(target_sum + 1), repeat=4)
valid_combinations = [combo for combo in combinations if sum(combo) == target_sum]
all_combinations.append(valid_combinations)
compute_combo = []
for a in all_combinations[2]:
for b in all_combinations[1]:
for c in all_combinations[0]:
compute_combo.append([a, b, c])
def foo(combo):
max_combo = 0
for j in combo:
for a in j:
suma = a[0] + a[1] + 3 * a[2] + a[3]
if suma > max_combo:
max_combo = suma
return max_combo
import time
start_time_par = time.time()
import multiprocessing
nb_cpus = 5
with multiprocessing.Pool(processes=nb_cpus) as pool:
results = pool.map(foo, [compute_combo])
end_time_par = time.time()
execution_time_par = end_time_par - start_time_par
print(f"Multiple CPUs result {max(results)}")
print(f"Multiple CPUs run time: {execution_time_par} s")
</code>
<code>
from itertools import product
all_combinations = []
for cas in range(3):
target_sum = 12
combinations = product(range(target_sum + 1), repeat=4)
valid_combinations = [combo for combo in combinations if sum(combo) == target_sum]
all_combinations.append(valid_combinations)
compute_combo = []
for a in all_combinations[2]:
for b in all_combinations[1]:
for c in all_combinations[0]:
compute_combo.append([a, b, c])
def foo(combo):
max_combo = 0
for j in combo:
for a in j:
suma = a[0] + a[1] + 3 * a[2] + a[3]
if suma > max_combo:
max_combo = suma
return max_combo
import time
start_time_par = time.time()
import multiprocessing
nb_cpus = 5
with multiprocessing.Pool(processes=nb_cpus) as pool:
results = pool.map(foo, [compute_combo])
end_time_par = time.time()
execution_time_par = end_time_par - start_time_par
print(f"Multiple CPUs result {max(results)}")
print(f"Multiple CPUs run time: {execution_time_par} s")
</code>
from itertools import product
all_combinations = []
for cas in range(3):
target_sum = 12
combinations = product(range(target_sum + 1), repeat=4)
valid_combinations = [combo for combo in combinations if sum(combo) == target_sum]
all_combinations.append(valid_combinations)
compute_combo = []
for a in all_combinations[2]:
for b in all_combinations[1]:
for c in all_combinations[0]:
compute_combo.append([a, b, c])
def foo(combo):
max_combo = 0
for j in combo:
for a in j:
suma = a[0] + a[1] + 3 * a[2] + a[3]
if suma > max_combo:
max_combo = suma
return max_combo
import time
start_time_par = time.time()
import multiprocessing
nb_cpus = 5
with multiprocessing.Pool(processes=nb_cpus) as pool:
results = pool.map(foo, [compute_combo])
end_time_par = time.time()
execution_time_par = end_time_par - start_time_par
print(f"Multiple CPUs result {max(results)}")
print(f"Multiple CPUs run time: {execution_time_par} s")
Can you help me to find the mistake in my code, please?