Нет, Python не будет магически распараллеливать это для вас. Фактически, это не может, так как не может доказать независимость записей; это потребовало бы большой проверки / проверки программы, что невозможно сделать правильно в общем случае.
Если вам нужен быстрый грубый многоядерный параллелизм, я рекомендую joblib вместо:
from joblib import delayed, Parallel
values = Parallel(n_jobs=NUM_CPUS)(delayed(f)(x) for x in range(1000))
Мало того, что я наблюдал почти линейное ускорение при использовании этой библиотеки, она также имеет замечательную особенность сигналов, таких как сигнал от Ctrl-C, на ее рабочие процессы, чего нельзя сказать обо всех многопроцессорных библиотеках.
Обратите внимание, что joblib на самом деле не поддерживает параллелизм совместно используемой памяти: он порождает рабочие процессы , а не потоки, поэтому он несет некоторые накладные расходы на передачу данных рабочим и возвращает результаты в главный процесс. 1012 *