Модуль threading
является одним из способов реализации многопоточности в Python. Это означает, что с его помощью вы можете выполнять несколько операций одновременно, используя разные потоки. В этой статье мы рассмотрим основы работы с модулем threading
и приведем примеры его использования.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Создание потоков
Для создания нового потока вам потребуется импортировать модуль threading
и использовать его класс Thread
. Класс Thread
принимает два основных аргумента: target
— функция, которую нужно выполнить в новом потоке, и args
— кортеж аргументов, передаваемых этой функции.
Пример создания и запуска потока:
import threading def print_numbers(): for i in range(10): print(i) thread = threading.Thread(target=print_numbers) thread.start()
Ожидание завершения потока
Чтобы дождаться завершения потока, вы можете использовать метод join()
. Это полезно, когда вам нужно убедиться, что все потоки выполнили свою работу перед тем, как продолжить выполнение основной программы.
Пример использования метода join()
:
import threading def print_numbers(): for i in range(10): print(i) thread = threading.Thread(target=print_numbers) thread.start() thread.join() print("All threads are done")
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
Работа с глобальными переменными
При работе с многопоточностью важно учитывать, что потоки могут одновременно обращаться к одной и той же глобальной переменной. В таких случаях возможны «гонки» между потоками, поэтому рекомендуется использовать механизмы синхронизации, такие как блокировки (Lock).
Пример использования блокировки при работе с глобальной переменной:
import threading counter = 0 lock = threading.Lock() def increment_counter(): global counter with lock: for _ in range(10000): counter += 1 threads = [threading.Thread(target=increment_counter) for _ in range(10)] for thread in threads: thread.start() for thread in threads: thread.join() print(f"Final counter value: {counter}")
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Заключение
В этой статье мы рассмотрели основы работы с модулем threading
в Python, такие как создание и запуск потоков, ожидание их завершения, а также работу с глобальными переменными в многопоточной среде. Помимо этого, не забывайте о важности синхронизации при обращении к общим ресурсам, чтобы избежать возможных проблем с «гонками» между потоками. Удачи вам в изучении многопоточности в Python! 😉
Добавить комментарий