Вы можете использовать pool.starmap
, который ожидает кортеж кортежей, которые являются аргументами вашей функции. Здесь, чтобы показать шаги, я заранее сгенерировал кортежи и сохранил их в func_arg_tuple.
Также нет необходимости в промежуточном шаге сохранения результатов в функции data_generation. Просто верните значение, которое вы хотите обработать, и оно будет в results
, когда работа пула будет завершена.
import multiprocessing
def data_generation(param1, param2, param3):
# sample processing function - add your own
return np.random.normal(param3, param1, param2)
param1 = 1
param2 = 2
with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:
func_arg_tuple = tuple((param1, param2, ratio) for ratio in np.arange(0.3, 1.4, 0.1))
results = pool.starmap(data_generation, func_arg_tuple)
>>>results
[array([-0.89459092, 2.03727378]),
array([-0.79459092, 2.13727378]),
array([-0.69459092, 2.23727378]),
array([0.57145244, 0.75501116]),
array([ 2.40776746, -0.17882601]),
array([0.77145244, 0.95501116]),
array([-0.88291467, 1.3072801 ]),
array([0.97145244, 1.15501116]),
array([0.0123457 , 2.25667152]),
array([2.90776746, 0.32117399]),
array([3.00776746, 0.42117399])]