Sobes.tech
Junior — Middle
100

Koje su ti osnovne mehanizme za sinhronizaciju niti ili procesa?

Компаније где су питане
WildberriesWildberries
Инновационный центр Безопасный транспорт

Одговор од АИ

sobes.tech АИ

Основные механизмы синхронизации потоков или процессов в 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.