Чтобы улучшить код, который имеет один тяжелый цикл, мне нужна скорость. Как я могу реализовать многопроцессорность для такого кода? (А является типичным размером 2 и л до 10)Многопроцессорные вложенные петли питона
for x1 in range(a**l):
for x2 in range(a**l):
for x3 in range(a**l):
output[x1,x2,x3] = HeavyComputationThatIsThreadSafe1(x1,x2,x3)
Комментарий ShadowRanger на [ваш другой вопрос] (http://stackoverflow.com/q/37081288/1461210) по-прежнему стоит - все потоки в мире не будут делать большую часть вмятин, если вы привержены вызывая 'HeavyComputThatIsThreadSafe1' * более миллиарда раз *. Сколько секунд занимает один вызов «HeavyComputThatIsThreadSafe1»? Возьмите это число, умножьте его на 1073741824 и разделите на количество ядер, которые у вас есть. Это дает вам абсолютное время исполнения сценариев, которое вы можете достичь с помощью многопроцессорной обработки. –
Я рассмотрел проблемы производительности с помощью «HeavyComputThatiIsThreadSafe» в [исходном вопросе] (http://stackoverflow.com/a/37100607/392949), с которым вы связались. Даже с указанным размером данных требуется всего ~ 8 ГБ памяти и 45 секунд для прохождения всех трех вложенных циклов, если вы возьмете несколько разумных наборов оптимизации. – JoshAdel