Как получить результат выполнения функций из 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)

Ответы (0 шт):