Sobes.tech
Junior — Middle
103

Quelles méthodes et outils avez-vous utilisés pour prévenir les conditions de course lors du développement en Python?

Entreprises à qui on a demandé
Код Открытия

Réponse de l'IA

sobes.tech IA

Для предотвращения условий гонки (race conditions) в Python применяются различные методы синхронизации, особенно при работе с потоками или процессами:

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

Пример использования Lock для защиты общего ресурса:

import threading

counter = 0
lock = threading.Lock()

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

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

print(counter)  # Ожидается 1000

Без блокировки значение counter могло бы быть меньше из-за одновременного доступа и перезаписи.