Фон
Я немного новичок в разработке и у меня был общий вопрос по питону / программированию. Если у вас есть метод, который является рекурсией, что означает включение нескольких потоков или многопроцессорности? Я сделал небольшое чтение и несколько примеров, но они, кажется, применяют синтаксис для нового кода (и не очень трудоемких задач), мне больше интересно, как мне перепроектировать существующий код, чтобы сделать это?
Скажем, у меня есть что-то, что интенсивно использует процессор (в основном продолжает добавлять к себе, пока не достигнут предел):
def adderExample(sum, number):
if sum > 1000:
print 'sum is larger than 10. Stoping'
else:
sum = sum + number
print sum
number = number + 1
adderExample(sum, number)
adderExample(0,0)
Вопрос (ы) / Хотя процесс
Как мне подойти к этому, чтобы заставить его работать быстрее, если у меня есть несколько доступных ядер (я хочу, чтобы он в конечном итоге захотел охватить машины, но я думаю, что это отдельная проблема с hadoop, поэтому я оставлю этот пример только для одной системы с несколько процессоров)? Кажется, что многопоточность - не лучший выбор (из-за времени, которое требуется для создания новых потоков), если это правда, я должен сосредоточиться только на многопроцессорности? Если да, могут ли рекурсии быть разделены на разные процессоры (я полагаю, что очереди vai и затем возвращаются после того, как это сделано)? Могу ли я создать несколько потоков для каждого процесса, чем разделить эти процессы на несколько процессоров? Наконец, ограничивает ли глубина рекурсии общий лимит или он основан на потоках / процессах, если так, то обходится ли многопроцессорность / многопоточность?
Другой вопрос (связанный), как эти парни, пытающиеся кодировать (rsa, беспроводные ключи и т. Д.) С помощью грубой силы, преодолевают эту проблему? Я предполагаю, что они как-то масштабируют свои математические процессы по нескольким процессорам. Этот или любой другой пример для моего понимания был бы великолепен.
Любые советы / предложения будут великолепны
Спасибо!