Python & Amazon EC2 - использовать все вычислительные устройства? - PullRequest
1 голос
/ 05 июня 2011

Я создаю научное приложение на Python и рассматриваю возможность использования Amazon EC2 для запуска процесса.

Мое приложение требует памяти и ЦП и может извлечь выгоду из любых предоставленных ресурсов

Extra Large Instance в EC2 дает около 15 ГБ памяти вместе с 8 вычислительными блоками.

Мой вопрос: может ли использовать один скрипт Python (при запуске на EC2) все 8 вычислительных единиц ?Или я должен запустить 8 независимых процессов, чтобы в полной мере использовать вычислительные блоки 8 ?

Примечание: в случае, если это имеет значение, я планирую использовать Linux экземпляр на EC2.

Ответы [ 2 ]

4 голосов
/ 05 июня 2011

Python имеет GIL, который усложняет написание многопоточных приложений, которые полностью используют более одного ядра. Вы можете прочитать больше об этом здесь Как потоки работают в Python и каковы распространенные подводные камни, специфичные для Python-потоков? или здесь http://www.dabeaz.com/python/UnderstandingGIL.pdf, если вы действительно в подробностях. Я склонен использовать потоки Python только для обеспечения фоновой работы различных задач (например, связи), а не для оптимальной производительности.

Как сказал Джереми, использование многопроцессорного модуля является альтернативным вариантом, или вы можете просто написать свой сценарий, чтобы он работал с независимыми частями ваших данных, а затем запустить любое количество копий, которое вы предпочитаете.

3 голосов
/ 05 июня 2011

8 «вычислительных блоков» работают на 4 физических процессорах, поэтому простой сценарий сможет использовать только 25% доступной мощности. Тем не менее, модуль Python multiprocessing позволяет писать один сценарий, используя несколько процессов, потенциально используя все «вычислительные единицы».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...