Как работает мультипроцессинг в Python: руководство для начинающих 🚀

Мультипроцессинг в Python позволяет выполнять несколько процессов одновременно, увеличивая производительность и использование ресурсов компьютера. Для работы с мультипроцессингом в Python мы можем использовать модуль "multiprocessing". Вот пример:

import multiprocessing

def worker(num):
    """ Функция, которая будет выполняться в отдельном процессе """
    print(f'Работник {num} начал выполнение')
    
if __name__ == '__main__':
    # Создаем новый процесс
    p = multiprocessing.Process(target=worker, args=(1,))
    
    # Запускаем процесс
    p.start()
    
    # Ждем завершения процесса
    p.join()

В этом примере мы создаем новый процесс с помощью класса "Process" из модуля "multiprocessing". Мы передаем функцию "worker" в качестве цели для выполнения процесса и задаем аргумент "1". Затем мы запускаем процесс с помощью метода "start" и ждем его завершения с помощью метода "join".

Детальный ответ

Как работает мультипроцессинг в Python

Мультипроцессинг в Python - это возможность запуска нескольких процессов одновременно для выполнения задач параллельно. Он предоставляет мощный инструментарий для эффективного использования многоядерных процессоров и распределенных систем.

Импортирование модуля multiprocessing

Для использования мультипроцессинга в Python, мы должны импортировать модуль multiprocessing.


import multiprocessing
    

Создание процесса

Для создания процесса, мы должны определить функцию, которую этот процесс будет выполнять. Затем мы можем создать объект класса Process, передавая эту функцию в качестве аргумента.


def my_function(name):
    print(f"Привет, {name}!")

my_process = multiprocessing.Process(target=my_function, args=("Джон",))
    

Запуск процесса

После создания процесса, мы можем запустить его с помощью метода start().


my_process.start()
    

Ожидание завершения процесса

Метод join() позволяет дождаться завершения процесса. Если мы хотим дождаться завершения нескольких процессов, мы можем вызвать метод join() для каждого из них.


my_process.join()
    

Пул процессов

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

Модуль Pool предоставляет функциональность для работы с пулом процессов.


def square(num):
    return num * num

pool = multiprocessing.Pool(processes=4)
results = pool.map(square, [1, 2, 3, 4, 5])
    

В этом примере мы создаем пул процессов с помощью функции Pool() и задаем количество процессов равным 4. Затем мы используем метод map() для применения функции square() к каждому элементу списка, передавая список в качестве входных данных.

Обмен данными между процессами

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

Разделяемая память

Модуль multiprocessing предоставляет классы для создания разделяемой памяти, такие как Value и Array.


shared_value = multiprocessing.Value('i', 0)
shared_array = multiprocessing.Array('i', [1, 2, 3, 4, 5])
    

В этом примере мы создаем переменную shared_value с помощью класса Value() и массив shared_array с помощью класса Array(). Каждый процесс может получать доступ к этим разделяемым объектам.

Очереди

Модуль multiprocessing предоставляет класс Queue для создания очередей.


queue = multiprocessing.Queue()
queue.put("Сообщение 1")
message = queue.get()
    

В этом примере мы создаем очередь с помощью класса Queue(). Мы помещаем в нее сообщение с помощью метода put() и затем извлекаем его с помощью метода get(). Очередь обеспечивает безопасное взаимодействие между процессами, гарантируя правильную синхронизацию.

Заключение

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

Видео по теме

Многопоточность и Асинхронность в Программировании | Python Threading и Multiprocessing

Multiprocessing Python Pool. Полное видео по работе с Пуллами в Python

Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает?

Похожие статьи:

🔐 Как программировать ESP32 на Python: Подробное руководство и примеры 🔐

🤖 Как запустить бота Телеграмм на Питоне: подробный руководство с простыми инструкциями

🔍 Как узнать версию питона через терминал: простой способ

Как работает мультипроцессинг в Python: руководство для начинающих 🚀

🐍 Python: как правильно прочитать файл построчно?

🔢 Как обозначаются четные и нечетные числа в Питоне 🐍

Как писать функции в Python: лучшие советы и примеры