В настоящее время я разрабатываю приложение, которое имеет один модуль, который будет загружать большие объемы данных из базы данных и уменьшать его до гораздо меньшего набора, используя различные вычисления в зависимости от обстоятельств.Как я могу сказать, что многоядерный/многопроцессорный компьютер обрабатывает вызовы функций в цикле параллельно?
Многие из более интенсивных операций ведут себя детерминистически и поддаются параллельной обработке.
При условии, что у меня есть цикл, который выполняет итерацию по большому количеству блоков данных, поступающих из db, и для каждого вызова детерминированной функции без побочных эффектов, как бы я сделал это так, чтобы программа не дождалась, когда функция но скорее задает следующие вызовы, поэтому их можно обрабатывать параллельно? Наивный подход, чтобы продемонстрировать этот принцип, сделает меня сейчас.
Я прочитал документ Google MapReduce, и, хотя я мог бы использовать общий принцип в ряде мест, я пока не буду нацелен на большие кластеры, скорее это будет один многоядерный или многопроцессорный машина для версии 1.0. Так что в настоящее время я не уверен, могу ли я реально использовать библиотеку или мне пришлось бы рулонную базовую версию.
Я нахожусь на ранней стадии процесса проектирования, и до сих пор я нацелен на C-something (для критических бит скорости) и Python (для критических бит производительности) в качестве моих языков. Если есть веские причины, я могу переключиться, но до сих пор я доволен своим выбором.
Обратите внимание, что мне известно о том, что для получения следующего фрагмента из базы данных может потребоваться больше времени, чем для обработки текущего, и весь процесс будет связан с I/O-привязкой. Тем не менее, я предполагал, что на данный момент он не использует и на практике использует кластер db или кеширование памяти или что-то еще, что не связано с I/O-привязкой.
Не могли бы вы обновить текст, чтобы добавить ссылку на документ google mapreduce, я думаю, что это отличный ресурс (http://labs.google.com/papers/mapreduce.html). – 2008-09-15 20:01:10