Как сделать multiprocessing для одной функции запущенной несколько раз
Есть одна функция, её нужно запустить 4 раза с разными данными так, чтобы все эти 4 раза функция запускались одновременно, с максимальной производительностью, а не поочерёдно. Буду благодарен любой помощи.
def func(a1, a2, a3):
a1 * 200 / 30
a2 * 200 / 30
a3 * 200 / 30
print(a1, a2, a3)
func(32, 34, 54)
func(55, 64, 88)
func(12, 54, 98)
func(11, 23, 35)
Ответы (3 шт):
Автор решения: Exemplles
→ Ссылка
Самый банальный вариант:
import multiprocessing
def func(a1, a2, a3):
a1 * 200 / 30
a2 * 200 / 30
a3 * 200 / 30
print(a1, a2, a3)
args = ((32, 34, 54), (55, 64, 88), (12, 54, 98), (11, 23, 35))
if __name__ == '__main__':
for arg in args:
multiprocessing.Process(target=func, args=arg).start()
Автор решения: Senior Pomidor
→ Ссылка
Вы можете использовать библиотеку multiprocessing для параллельного запуска функций в Python.
import multiprocessing
def print_func(a1, a2, a3):
a1 * 200 / 30
a2 * 200 / 30
a3 * 200 / 30
print(a1, a2, a3)
if __name__ == '__main__':
procs = []
def run_process(a1, a2, a3):
p = multiprocessing.Process(target=print_func, args=(a1, a2, a3,))
procs.append(p)
p.start()
return p
run_process(32, 34, 54)
run_process(55, 64, 88)
run_process(12, 54, 98)
run_process(11, 23, 35)
# complete the processes
for proc in procs:
proc.join()
Автор решения: vadim vaduxa
→ Ссылка
args = ((32, 34, 54), (55, 64, 88), (12, 54, 98), (11, 23, 35))
with multiprocessing.Pool(processes=4) as p:
p.starmap(func, args)