я понял из простых примеров, которые Pool.map предполагается вести себя идентично «нормальной» код питона ниже, за исключением параллельно:multiprocessing.Pool.map() не работает, как ожидалось
def f(x):
# complicated processing
return x+1
y_serial = []
x = range(100)
for i in x: y_serial += [f(x)]
y_parallel = pool.map(f, x)
# y_serial == y_parallel!
Однако у меня есть два бита кода, который я считаю, должны последовать этому примеру:
#Linear version
price_datas = []
for csv_file in loop_through_zips(data_directory):
price_datas += [process_bf_data_csv(csv_file)]
#Parallel version
p = Pool()
price_data_parallel = p.map(process_bf_data_csv, loop_through_zips(data_directory))
Однако параллельный код не работает, тогда как линейный код делает. Из того, что я могу наблюдать, параллельная версия, похоже, проходит через генератор (он выводит строки журнала из функции генератора), но затем фактически не выполняет функцию «process_bf_data_csv». Что я здесь делаю неправильно?
Это может быть и генератор. – dano
Спасибо за разъяснение, просто протестировали его и отредактировали мой пост. – Ayy