Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
04 Мар 2023
3 мин
9147

Как работать с модулем threading в Python

Изучите основы многопоточности в Python с модулем `threading`, создавайте, запускайте и синхронизируйте потоки.

Модуль 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! 😉

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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