Многопроцессорная обработка Python для цикла

Mnogoprocessornaa Obrabotka Python Dla Cikla



Многопроцессорность сопоставима с многопоточностью. Однако он отличается тем, что мы можем выполнять только один поток в данный момент из-за GIL, который используется для потоковой передачи. Многопроцессорность — это процесс последовательного выполнения операций на нескольких ядрах ЦП. Потоки не могут работать параллельно. Однако многопроцессорность позволяет нам устанавливать процессы и запускать их одновременно на разных ядрах ЦП. Цикл, такой как цикл for, является одним из наиболее часто используемых языков сценариев. Повторяйте ту же работу, используя различные данные, пока не будет достигнут критерий, например заданное количество итераций. Цикл выполняет каждую итерацию одну за другой.

Пример 1. Использование цикла For в модуле многопроцессорной обработки Python

В этом примере мы используем цикл for и процесс класса многопроцессорного модуля Python. Мы начнем с очень простого примера, чтобы вы могли быстро понять, как работает многопроцессорный цикл for в Python. Используя интерфейс, сравнимый с модулем потоковой обработки, многопроцессорность упаковывает создание процессов.







Используя подпроцессы, а не потоки, многопроцессорный пакет обеспечивает как локальный, так и удаленный параллелизм, что позволяет избежать глобальной блокировки интерпретатора. Используйте цикл for, который может быть строковым объектом или кортежем, для непрерывного повторения последовательности. Это работает не так, как ключевое слово, встречающееся в других языках программирования, и больше похоже на метод итератора, который можно найти в других языках программирования. Запустив новую многопроцессорную обработку, вы можете запустить цикл for, который одновременно выполняет процедуру.



Давайте начнем с реализации кода для выполнения кода с помощью инструмента «spyder». Мы считаем, что «spyder» также лучше всего подходит для запуска Python. Мы импортируем процесс многопроцессорного модуля, в котором выполняется код. Концепция многопроцессорности в Python, называемая «классом процесса», создает новый процесс Python, дает ему метод для выполнения кода и дает родительскому приложению способ управлять выполнением. Класс Process содержит процедуры start() и join(), обе из которых имеют решающее значение.



Затем мы определяем определяемую пользователем функцию под названием «func». Поскольку это определяемая пользователем функция, мы даем ей имя по своему выбору. Внутри тела этой функции мы передаем переменную «subject» в качестве аргумента и значение «maths». Затем мы вызываем функцию «print ()», передавая оператор «Имя общего субъекта есть», а также его аргумент «субъект», который содержит значение. Затем, на следующем шаге, мы используем «if name== _main_», который не позволяет вам запускать код, когда файл импортируется как модуль, и разрешает вам делать это только тогда, когда содержимое выполняется как скрипт.





Раздел условия, с которого вы начинаете, в большинстве случаев можно рассматривать как место для предоставления содержимого, которое должно выполняться только тогда, когда ваш файл запускается как сценарий. Затем мы используем тему аргумента и сохраняем в ней некоторые значения: «наука», «английский язык» и «компьютер». Затем процессу присваивается имя «process1[]» на следующем шаге. Затем мы используем «process(target=func)» для вызова функции в процессе. Target используется для вызова функции, и мы сохраняем этот процесс в переменной «P».

Затем мы используем «process1» для вызова функции «append()», которая добавляет элемент в конец списка, который у нас есть в функции «func». Поскольку процесс хранится в переменной «P», мы передаем «P» этой функции в качестве ее аргумента. Наконец, мы используем функцию «start ()» с «P», чтобы запустить процесс. После этого мы снова запускаем метод, указав аргумент «subject» и используя «for» в теме. Затем, используя еще раз «process1» и метод «add()», мы начинаем процесс. Затем процесс запускается, и результат возвращается. Затем процедуре сообщается об окончании с использованием техники «join()». Процессы, которые не вызывают процедуру «join()», не завершатся. Одним из важных моментов является то, что параметр ключевого слова «args» должен использоваться, если вы хотите предоставить какие-либо аргументы в процессе.




Теперь вы можете видеть в выводе, что оператор отображается первым, передавая значение для предмета «математика», которое мы передаем в функцию «func», потому что мы сначала вызываем его с помощью функции «process». Затем мы используем команду «append ()», чтобы иметь значения, которые уже были в списке, который добавляется в конце. Затем были представлены «наука», «компьютер» и «английский язык». Но, как видите, значения не в правильной последовательности. Это потому, что они делают это сразу после завершения процедуры и сообщают о своем сообщении.

Пример 2. Преобразование последовательного цикла For в многопроцессорный параллельный цикл For.

В этом примере задача многопроцессорного цикла выполняется последовательно перед преобразованием в параллельную задачу цикла for. Вы можете циклически перемещаться между последовательностями, такими как коллекция или строка, в том порядке, в котором они встречаются, с помощью циклов for.

Теперь приступим к реализации кода. Во-первых, мы импортируем «сон» из модуля времени. Используя процедуру «sleep()» в модуле time, вы можете приостановить выполнение вызывающего потока на любое время. Затем мы используем «random» из модуля random, определяем функцию с именем «func» и передаем ключевое слово «argu». Затем мы создаем случайное значение, используя «val», и устанавливаем его в «random». Затем мы блокируем на небольшой период, используя метод «sleep()» и передаем «val» в качестве параметра. Затем для передачи сообщения запускаем метод «print()», передавая в качестве его параметра слова «ready» и ключевое слово «arg», а также «created» и передаем значение с помощью «val».

Наконец, мы используем «flush» и устанавливаем для него значение «True». Пользователь может решить, следует ли буферизовать вывод, используя опцию сброса в функции печати Python. Значение по умолчанию для этого параметра False указывает, что вывод не будет буферизирован. Вывод отображается в виде ряда строк, следующих друг за другом, если вы установите для него значение true. Затем мы используем «if name== main» для защиты точек входа. Далее выполняем задание последовательно. Здесь мы устанавливаем диапазон «10», что означает, что цикл завершается после 10 итераций. Затем мы вызываем функцию «print()», передаем ей «готовый» оператор ввода и используем опцию «flush=True».


Теперь вы можете видеть, что когда мы выполняем код, цикл заставляет функцию выполняться «10» раз. Он повторяется 10 раз, начиная с нулевого индекса и заканчивая индексом девять. Каждое сообщение содержит номер задачи, который является номером функции, которую мы передаем как «arg» и номер создания.


Этот последовательный цикл теперь преобразуется в многопроцессорный параллельный цикл for. Мы используем тот же код, но собираемся использовать дополнительные библиотеки и функции для многопроцессорности. Следовательно, мы должны импортировать процесс из многопроцессорной обработки, как мы объясняли ранее. Затем мы создаем функцию с именем «func» и передаем ключевое слово «arg» перед использованием «val=random», чтобы получить случайное число.

Затем, после вызова метода «print()» для отображения сообщения и указания параметра «val» для небольшой задержки, мы используем функцию «if name= main» для защиты точек входа. После этого мы создаем процесс и вызываем функцию в процессе, используя «process» и передаем «target=func». Затем мы передаем «func», «arg», передаем значение «m» и передаем диапазон «10», что означает, что цикл завершает функцию после «10» итераций. Затем мы запускаем процесс, используя метод «start ()» с «процессом». Затем мы вызываем метод «join ()», чтобы дождаться выполнения процесса и завершить весь процесс после этого.


Поэтому, когда мы выполняем код, функции вызывают основной процесс и начинают свое выполнение. Однако они выполняются до тех пор, пока не будут выполнены все задачи. Мы видим это, потому что каждая задача выполняется одновременно. Он сообщает свое сообщение, как только оно закончено. Это означает, что хотя сообщения не по порядку, цикл завершается после завершения всех «10» итераций.

Вывод

В этой статье мы рассмотрели многопроцессорный цикл for Python. Мы также представили две иллюстрации. На первом рисунке показано, как использовать цикл for в библиотеке многопроцессорных циклов Python. А на втором рисунке показано, как преобразовать последовательный цикл for в параллельный многопроцессорный цикл for. Перед созданием скрипта для многопроцессорной обработки Python мы должны импортировать модуль многопроцессорной обработки.