#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 )
Я понял, что мне нужно использовать кортежи