Пример Multiprocessing обработки Python

Персонализированный диспетчер задач на Python Изучение

Python — это язык программирования, который полезен при разработке веб-сайтов и приложений. Также занимается визуализацией и анализом данных. Это сравнительно простой язык, который часто используют даже непрограммисты. В этой статье говорится об использовании многопроцессорности в Python.

Multiprocessing

Многопроцессорность имеет дело с потенциалом системы, которая поддерживает более одного процессора одновременно. Все приложения в многопроцессорной обработке разбиты на небольшие шаблоны, и каждый из этих шаблонов работает самостоятельно. В этом типе процесса используются два или более процесса. Представим себе, что компьютер работает на одном процессоре. Если мы назначим несколько процессоров одновременно, то через короткое время он будет передавать переключение каждой задачи другой задаче, чтобы все процессы продолжали работать. Другими словами, если есть еще более сложные задачи, которые нужно выполнить, их будет поддерживать на пути к завершению. В то время как распределить равное время для каждой задачи — тоже большая проблема. В этом состоянии нам необходимо возникнуть понятие многопроцессорности. Многопроцессорная система может позволить.

  • Multiprocessing: компьютер, использующий более одного центрального процессора.
  • Многоядерный процессор: отдельный компонент, использующий два или более процессора.

Multiprocessing в Python

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

Для python вы можете использовать любой другой инструмент для выполнения кодов. Для этой цели мы использовали инструмент SPYDER, который обязательно выполнит коды языка Python.

Импортировать Multiprocessing

print(«Number of CPU : «, multiprocessing.cpu_count())

Во-первых, нам нужно импортировать пакет «pg» multiprocessing, который позволит работать. Для каждого ПК выходные данные могут отличаться. У меня количество ядер — 4.

Во-первых, нам нужно импортировать пакет «pg»

Пример 1

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

Читайте также:  Как установить PyQt для Python в Windows?

Используя модуль многопроцессорности, мы вычислим функции куба и квадрата

Давайте разберемся с вышеупомянутым кодом. Мы создали процесс, а затем создали объект для обработки класса.

P1 = multiprocessing.process(print(print_cube(5, )))

P2= multiprocessing.process(print(print_square(2, )))

P1 и p2 — объекты процессов. Эти процессы содержат функциональный вызов с функцией печати, который напрямую вызывает функцию с аргументами в качестве параметра. Print_cube и print_square.

Мы используем методы start, чтобы запустить процесс.

P1.start()

P2.start()

Одна из используемых функций описывается как.

def print_square(num):

print(«Square: {}».format(num * num))

Функция square вычислит квадрат путем умножения заданного числа, использованного в вызове функции. Функция принимает число в переменной «num».

Функция square вычислит квадрат путем умножения заданного числа

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

Пример 2

Используя структуры данных, вы должны быть знакомы с использованием стеков и очередей в языке программирования. Из модуля многопроцессорности мы импортируем сюда класс очереди, который представляет собой структуру данных FIFO (First In First Out). Поочередно работают два процесса. Здесь мы используем две функции. Здесь функция Put () используется для вставки данных в очередь. В то время как мы используем get () для извлечения элементов из очереди. Ниже приведен код, иллюстрирующий работу многопроцессорной обработки в очереди. Первый шаг — ввести очереди.

Из очереди импорта в многопроцессорном режиме

После импорта модуля введите названия автомобилей в переменную массива

После импорта модуля введите названия автомобилей в переменную массива. Мы будем использовать цикл for для вставки значений в очередь, и put () сделает это. Переменная cnt используется для подсчета количества использованных автомобилей. Инициализируйте объект очереди с помощью оператора.

Queue = Queue()

Затем используется цикл для добавления значений; это будет использовать ключевое слово «queue», чтобы использовать функцию put () для аргументации имени автомобиля, который нужно вставить. Функция cnt будет увеличиваться после каждой вставки.

Для car in cars:

Queue.put(car)

Cnt +=1

Точно так же для put () используется цикл while, пока вся очередь не станет пустой.

Пока не queue.empty ():

Print(‘item no: ‘, cnt, ‘ ‘, queue.get())

Cnt+=1

Вывод показывает, что обе функции работают независимо

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

Пример 3

Этот пример содержит два процесса. В каждом процессе «PID» получается с помощью функции get (). Мы использовали два модуля. Один — это многопроцессорность, а другой — операционная система.

В каждом процессе «PID» получается с помощью функции get ()

Каждому процессу присваивается свой идентификатор.

Def process ():

Print (“ID of process running worker1:{}”.format(os.getpid()))

Сообщение объединяется с вызовом функции для получения идентификатора процесса. В основной программе идентификатор основного процесса извлекается с использованием того же подхода через get (). Затем процессы создаются посредством многопроцессорности. Доступ к каждому процессу осуществляется через его соответствующие объекты. т.е. для процесса 1 объектом является P1.

P1 = multiprocessing.Process(target=process1)

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

P1.join ()

Когда эта функция соединения получает сигнал, она печатает заявление о том, что выполнение завершено. Логический флаг определит, активен ли процесс; если да, то это правда, иначе ложь.

Print(“process p1 is alive:{}”.format(p1.is_alive()))

Когда эта функция соединения получает сигнал

Теперь выполните программу и возьмите результат. Вы можете видеть, что сначала отображается основной идентификатор, а затем идентификатор каждого процесса. После завершения выполнения для обоих процессов отображается статус «false».

Теперь выполните программу и возьмите результат

Пример 4

В этом примере вы увидите работу multiprocessing и import time, pool, cpu_count. POOL используется для выполнения процессов с несколькими входами и распределения этих входных данных между процессами. Функция квадрата вычисляет квадрат входного значения. Используя модуль времени из пакета, мы будем использовать функцию сна.

Time.sleep(3)

Эта функция имеет расширение по времени на 3 секунды. Это означает, что значение этой функции будет показано по истечении указанного времени. В основной программе мы запускаем таймер, а затем выделяем фиктивные значения для каждых 4 ядер.

Эта функция имеет расширение по времени на 3 секунды

With pool() as pool

Res = pool.map(square, values)

Print(res)

Функция пула выдает значения и одновременно вызывает функцию. Затем нам нужно остановить таймер. Эта функция таймера будет считать секунды, использованные для этой функции, известные как прошедшее время; он получается вычитанием начального значения времени из конечного значения.

Теперь запустите программу. Отображается первая строка, а затем это занимает 3 секунды. После этого отображается другой результат.

После этого отображается другой результат

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий