首页 > 解决方案 > 如何在没有交叉函数的情况下从 joblib 运行具有多参数的并行函数

问题描述

我正在尝试使用 joblib 中的 Parallel 函数来使用多个参数。我不确定,但它正在使用这些参数进行跨功能机制

假设我有两个列表 [1,2] 和 [5,7] 当我乘以列表时,我想要 5,14 作为我的输出。

import multiprocessing
from joblib import Parallel, delayed
from tqdm import tqdm
import numpy as np

def my_function(myList, parameters):
    print(myList*parameters)


num_cores = multiprocessing.cpu_count()
inputs = [1,2]
parameters = [5,7]

if __name__ == "__main__":
    processed_list = Parallel(n_jobs=2)(delayed(my_function)(myList= i,parameters = j) for i in inputs for j in parameters)

上面的代码似乎输出 5,7,10,14,但我想要 5,14,即 1 x 5,2 x 7

标签: pythonmultiprocessingjoblib

解决方案


import multiprocessing
from joblib import Parallel, delayed
from tqdm import tqdm
import numpy as np

def my_function(myList, parameters):
    print(myList*parameters)


num_cores = multiprocessing.cpu_count()



inputs = ((2,3),(3,5))


if __name__ == "__main__":
    processed_list = Parallel(n_jobs=num_cores)(delayed(my_function)( i, j) for i,j  in inputs )
    

我发现我需要使用元组


推荐阅读