Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: lock, rlock

Что такое Lock и RLock и в чём между ними разница?

Этот вопрос проверяет понимание синхронизации потоков и безопасной работы с общими ресурсами.

Короткий ответ

Lock — это простая блокировка, которую поток может захватить только один раз. RLock — это рекурсивная блокировка, позволяющая одному и тому же потоку захватывать её несколько раз. Lock проще и быстрее, но менее гибкий. RLock нужен в сложных сценариях с вложенными вызовами. Оба используются для защиты общих данных.

Длинный ответ

При работе с потоками важно предотвращать одновременный доступ к общим данным.

Lock

Определение:
Lock — это примитив синхронизации, который позволяет только одному потоку войти в критическую секцию.

Особенности:

  • Захват возможен только один раз

  • Повторный захват приводит к deadlock

  • Минимальные накладные расходы

Пример:

from threading import Lock

lock = Lock()

with lock:
    # критическая секция
    pass

RLock

Определение:
RLock (Reentrant Lock) — это блокировка, которую один поток может захватывать несколько раз.

Особенности:

  • Ведёт счёт захватов

  • Освобождается после соответствующего числа release

  • Подходит для вложенных вызовов

Пример:

from threading import RLock

lock = RLock()

def func():
    with lock:
        inner()

def inner():
    with lock:
        pass

Ключевые различия

  1. Lock — один захват, RLock — несколько

  2. RLock безопасен при рекурсии

  3. Lock быстрее и проще

Вывод:
Используй Lock по умолчанию. Выбирай RLock, если функция может повторно захватывать одну и ту же блокировку.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#lock

#rlock

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.