Как получить результат выполнения функций из multiprocessing.Process
Есть набор функций func1(args1), func2(args2), func3(args3), которые долго работают, делая множество математических вычислений сильно нагружая процессор и результатом их работ является большие по размеру DataFrame-ы df1, df2, df3. Вопрос - как правильно и оптимально запустить выполнения этих функций в параллельном режиме и получить результаты выполнения функций? Чтобы: 1) Одновременно выполнялось не больше двух функций 2) По завершению работы функций получить лист [df1, df2, df3] в порядке запуска функий.
Ниже приведен код, который не возвращает нужные значения. Как его изменить для решения поставленной задачи? Документация не очень помогла (https://docs.python.org/3/library/multiprocessing.html)
from multiprocessing import Process import pandas as pd
def runInParallel(*fncs):
proc = []
for fnc in fncs:
p = Process(target=fnc[0][0], args = (fnc[0][1]))
p.start()
proc.append(p)
for p in proc:
p.join()
return proc
def func1(args1):
return pd.DataFrame(range(args1[0], args1[1]))
def func2(args2):
return pd.DataFrame(range(args2[0], args2[1]))
def func3(args3):
return pd.DataFrame(range(args3[0], args3[1]))
args1 = (1000, 2000)
args2 = (2000, 3000)
args3 = (3000, 4000)
print(func1(args1))
results = runInParallel([(func1, (args1)), (func2, (args2)), (func3, (args3))])
print(results)