как запустить одну функцию параллельно, которая зависит от другой большой функции - PullRequest
0 голосов
/ 23 января 2020

У меня есть требование, как показано ниже

from multiprocessing import Pool
import pandas as pd
import time
def test():
    print("Parent")
def opt_by_region(a,b,c,d):
    print("inside process")
    time.sleep(1)
    return b
def opt():
    pool=Pool(processes=4)
    df=pd.DataFrame([1,2])
    res=[pool.apply_async(fun,args=(r,df,3,4))for r in range(5)]
    pool.close()
    pool.join()

Это пример структуры моего кода, который работает. Здесь мне нужно запускать "opt_by_region" только параллельно для каждого региона. но region и другие переменные получают из функции "opt" (она не работает параллельно), так как я могу решить эту проблему. Как я могу поставить wait "opt_by_region" для запуска со всеми переменными из функции "opt". Может кто-нибудь пожалуйста предложить идеи, которые будут оценены.

1 Ответ

0 голосов
/ 24 января 2020

Во-первых, попробуйте удалить понимание этого списка из pool.apply_asyn c. Вы хотите предоставить список своих аргументов для apply_asyn c, даже если элементы списка являются контейнерами или объектами.

Далее, я думаю, что у вас есть опечатка, и вы должны предоставить функцию, которую вы хотите перебрать (забавно <-> opt_by_region)

args = [(r,df,3,4) for r in range(5)]
res = pool.apply_async(opt_by_region,args=args)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...