Многопоточность — это один из способов управления одновременным выполнением нескольких задач в программе. В Python это можно реализовать с помощью модуля threading. В этой статье мы разберемся, как использовать многопоточность в Python и рассмотрим примеры.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Создание потоков
Для создания потоков в Python используется класс Thread из модуля threading. Вот простой пример создания двух потоков, которые выводят сообщение о своем выполнении:
import threading
def print_hello():
print("Hello from thread", threading.current_thread().name)
thread1 = threading.Thread(target=print_hello, name="Thread-1")
thread2 = threading.Thread(target=print_hello, name="Thread-2")
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("All threads finished")
В этом примере мы создаем два потока, задавая функцию print_hello в качестве их целевой функции. Затем мы запускаем потоки с помощью метода start() и ожидаем их завершения с помощью метода join().
Использование блокировок
При работе с многопоточностью может возникнуть проблема, когда два или более потока пытаются одновременно получить доступ к общему ресурсу. В этом случае необходимо использовать блокировки, чтобы гарантировать, что только один поток имеет доступ к ресурсу в определенный момент времени.
Пример использования блокировок:
import threading
counter = 0
lock = threading.Lock()
def increment_counter():
global counter
with lock:
temp = counter
counter = temp + 1
print("Thread", threading.current_thread().name, "incremented counter to", counter)
threads = []
for i in range(10):
thread = threading.Thread(target=increment_counter, name=f"Thread-{i+1}")
thread.start()
threads.append(thread)
for thread in threads:
thread.join()
print("Counter value:", counter)
В этом примере потоки инкрементируют общий счетчик, используя блокировку для обеспечения безопасности доступа к общему ресурсу.
😉 Обратите внимание, что блокировки могут привести к снижению производительности, если они используются часто или неправильно. Поэтому важно выбирать правильные механизмы синхронизации для вашего кода.
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Заключение
В этой статье мы рассмотрели основы работы с многопоточностью в Python, включая создание потоков и использование блокировок. Многопоточность может быть полезным инструментом для улучшения производительности и отзывчивости вашего кода, но также требует особого внимания при работе с общими ресурсами и синхронизации.
Удачи вам в изучении многопоточности в Python! Если вы хотите узнать больше, рекомендуем обратиться к онлайн школе, которая учит специалистов в сфере «Python-разработка». Не забудьте использовать наш спец.тег для получения дополнительной информации.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий