Как многопоточную функцию Python, которая требует вызова нескольких других функций - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу многопоточность скрипта Python в моей основной функции, которая вызывает много других ранее определенных функций.Насколько я понимаю, если одна функция должна быть запущена до вызова другой функции (т.е. по очереди), то вы не можете выполнять многопоточность функций, поскольку последняя функция требует вывода из предыдущей функции.Это правильно?

Для функции, которая не требует значения из ранее вызванной функции, я хочу многопоточность функций.

Пример

def main():

    df = pd.read_csv(path) # I don't believe this code can be parallelized with the code below since this needs to be executed first

    # I want to parallelize this code below
    for col in df[[i for i in df.columns if i.endswith('col1')].columns:
        df = function1(df, col, 4, 1)

    df = function2(df, [i for i in df.columns if i.endswith('col2')], 2, 6)

    for col in [i for i in df.columns if i.endswith('col2')]:
        df = pd.merge_asof(df, function3(df[col], 9), left_index=True, right_index=True)

    for i in [i for i in df.columns if i.endswith('col3')]:
        df = function4(df, col)

Прямо сейчас, когда я используюследующий код ниже производительности вообще не увеличивается.

with Pool() as p:
    p.starmap(main, [(inputs...)])
    end_time = time.time()
    print(end_time - start_time)
    print('Script took:', end_time - start_time)

Я тоже пробовал это и безуспешно с увеличением производительности.

with Pool() as p:
    p.map(main, [inputs...)])
    end_time = time.time()
    print(end_time - start_time)
    print('Script took:', end_time - start_time)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...