Возможно ли ускорить выполнение одной задачи с использованием многопроцессорной обработки/потоковой обработки? Я чувствую, что ответ «нет». Вот пример того, что я имею в виду под «одной задачи»:Ускорение выполнения одной задачи с использованием многопроцессорной или потоковой обработки
for i in range(max):
pick = random.choice(['on', 'off', 'both'])
С аргументом 10000000 он занимает около 7,9 секунд, чтобы завершить в моей системе.
У меня есть основное понимание того, как использовать многопроцессорную обработку и многопоточность для нескольких задач. Например, если у меня есть 10 каталогов, каждый из которых содержит X количество файлов, которые нужно читать, я мог бы использовать создание 10 потоков.
Я подозреваю, что в одной задаче используется только один процесс (диспетчер задач сообщает, что использование ЦП минимально). Есть ли способ использовать мои другие ядра в таких случаях? Или увеличивает скорость CPU/Memory - единственный способ получить более быстрый результат?
Многопроцессорная обработка может помочь, несколько потоков в одном процессе не так много (ключевое слово: «блокировка глобального интерпретатора» aka «GIL») –
@ Майкл Бутшер: Не могли бы вы привести пример того, как я мог бы разбить код, упомянутый мною, с использованием многопроцессорности ? –
Вы можете прочитать http://mikecvet.wordpress.com/2010/07/02/parallel-mapreduce-in-python/ для примера –