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