Как запустить параллельную функцию из joblib с несколькими аргументами без перекрестной функции

#python #multiprocessing #joblib

#python #многопроцессорная обработка #joblib

Вопрос:

Я пытаюсь использовать несколько аргументов, используя параллельную функцию в joblib. Я не уверен, но он выполняет механизм перекрестной функции с этими аргументами

допустим, у меня есть два списка [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

Ответ №1:

 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 )
    
  

Я понял, что мне нужно использовать кортежи