如何单独并行运行一个依赖于另一个大函数的函数



我有如下要求

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"。但是区域和其他变量是从函数"opt"获取的(它不是并行运行的( 那么我该如何解决这个问题.我怎样才能让等待"opt_by_region"触发函数"opt"中的所有变量。任何人都可以提出想法,将不胜感激。

首先,尝试从大约pool.apply_async中删除该列表理解。您希望提供要apply_async的参数列表,即使列表元素是容器或对象。

接下来,我认为你有一个错别字,应该提供你想要迭代的功能(有趣的<-> opt_by_region(

args = [(r,df,3,4) for r in range(5)]
res = pool.apply_async(opt_by_region,args=args)

最新更新