如何 运行 单独并行依赖于另一个大函数的一个函数
how to run one function alone in parallel that depend on another big function
我有如下需求
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()
这是我的代码的示例结构,working.Here 我需要 运行 "opt_by_region" 仅对每个区域并行。但是 region 和其他变量是从函数 "opt" 获取的(它不是 运行ning 并行)
那么我该如何解决 this.how 我可以等待 "opt_by_region" 来触发函数 "opt" 中的所有变量吗?有人可以提出一些想法吗?
首先,尝试从 pool.apply_async 左右删除列表理解。您想要向 apply_async 提供参数列表,即使列表元素是容器或对象。
接下来,我认为你打错了,应该提供你想要迭代的函数 (fun <-> opt_by_region)
args = [(r,df,3,4) for r in range(5)]
res = pool.apply_async(opt_by_region,args=args)
我有如下需求
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()
这是我的代码的示例结构,working.Here 我需要 运行 "opt_by_region" 仅对每个区域并行。但是 region 和其他变量是从函数 "opt" 获取的(它不是 运行ning 并行) 那么我该如何解决 this.how 我可以等待 "opt_by_region" 来触发函数 "opt" 中的所有变量吗?有人可以提出一些想法吗?
首先,尝试从 pool.apply_async 左右删除列表理解。您想要向 apply_async 提供参数列表,即使列表元素是容器或对象。
接下来,我认为你打错了,应该提供你想要迭代的函数 (fun <-> opt_by_region)
args = [(r,df,3,4) for r in range(5)]
res = pool.apply_async(opt_by_region,args=args)