Параллельные вычисления в Python могут значительно ускорить выполнение вашего кода, особенно при работе с большими объемами данных или вычислительно сложными задачами. В этой статье мы рассмотрим основные подходы к реализации параллельных вычислений в Python с использованием стандартных библиотек, а также покажем примеры кода для каждого подхода.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Многопоточность (Threading)
Многопоточность позволяет выполнять несколько потоков одновременно в рамках одного процесса. В Python можно использовать стандартную библиотеку threading
для создания и управления потоками. Однако из-за Global Interpreter Lock (GIL) в CPython, потоки не могут выполняться параллельно на нескольких ядрах процессора.
Пример простого многопоточного кода:
import threading def print_numbers(): for i in range(10): print(i) def print_letters(): for letter in 'abcdefghij': print(letter) thread1 = threading.Thread(target=print_numbers) thread2 = threading.Thread(target=print_letters) thread1.start() thread2.start() thread1.join() thread2.join()
Многопроцессорность (Multiprocessing)
Многопроцессорность позволяет использовать несколько процессов для параллельного выполнения кода, что обеспечивает более эффективное использование многоядерных процессоров. В Python можно использовать стандартную библиотеку multiprocessing
для создания и управления процессами. Процессы могут выполняться параллельно на нескольких ядрах процессора, обойдя ограничения GIL.
Пример простого многопроцессорного кода:
import multiprocessing def print_numbers(): for i in range(10): print(i) def print_letters(): for letter in 'abcdefghij': print(letter) process1 = multiprocessing.Process(target=print_numbers) process2 = multiprocessing.Process(target=print_letters) process1.start() process2.start() process1.join() process2.join()
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Конкурентность (Concurrent)
Библиотека concurrent.futures
предоставляет высокоуровневый интерфейс для асинхронного выполнения вызовов функций в параллельных потоках или процессах. Она позволяет легко создавать пулы потоков или процессов и выполнять задачи асинхронно, а также получать результаты выполнения.
Пример использования concurrent.futures
для параллельного выполнения функции:
import concurrent.futures def square(x): return x * x with concurrent.futures.ThreadPoolExecutor() as executor: numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] results = list(executor.map(square, numbers)) print(results)
😉 Итак, в этой статье мы рассмотрели основные подходы к реализации параллельных вычислений в Python с использованием стандартных библиотек. Выбор подхода зависит от вашей задачи и требований к производительности кода. Не забывайте тестировать и оптимизировать ваш код, чтобы получить максимальную пользу от параллельных вычислений!
Добавить комментарий