如何单独运行一个依赖于另一个大功能的功能

时间:2020-01-23 18:24:43

标签: python-3.x python-multiprocessing

我有如下要求

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”获取的(它不是并行运行的) 因此,我该如何解决。如何将等待的“ opt_by_region”与函数“ opt”中的所有变量一起触发。有人可以提出建议,将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,尝试从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)