Sobes.tech
Junior — Middle
92

¿Qué métodos y herramientas ha utilizado para prevenir condiciones de carrera en el desarrollo con Python?

Empresas donde se preguntó
Код Открытия

Respuesta de la IA

sobes.tech AI

Для предотвращения условий гонки (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 могло бы быть меньше из-за одновременного доступа и перезаписи.