Sobes.tech
Back to questions
Junior — Middle
66

Какие основные механизмы для синхронизации потоков или процессов тебе знакомы?

Companies where asked
WildberriesWildberries
Инновационный центр Безопасный транспорт

Answer from AI

sobes.tech AI

Основные механизмы синхронизации потоков или процессов в Python включают:

  • Lock (блокировка) — предотвращает одновременный доступ к общим ресурсам.
  • RLock (рекурсивный Lock) — позволяет одному потоку несколько раз захватывать блокировку.
  • Semaphore (семафор) — ограничивает число потоков, которые могут одновременно выполнять определённый участок кода.
  • Event (событие) — позволяет одному потоку сигнализировать другим о наступлении события.
  • Condition (условие) — позволяет потокам ждать определённого условия и уведомлять друг друга.

Пример использования Lock:

import threading

lock = threading.Lock()
shared_resource = 0

def increment():
    global shared_resource
    with lock:
        temp = shared_resource
        temp += 1
        shared_resource = temp

threads = [threading.Thread(target=increment) for _ in range(10)]
for t in threads:
    t.start()
for t in threads:
    t.join()

print(shared_resource)  # Ожидается 10

Для процессов можно использовать аналогичные механизмы из модуля multiprocessing, например, multiprocessing.Lock.