typestar

Locks en Python

Proteger el estado compartido para que los hilos no lo corrompan.

import threading

total = 0
candado = threading.Lock()


def agregar_muchos(veces):
    global total
    for _ in range(veces):
        with candado:
            total += 1


hilos = [threading.Thread(target=agregar_muchos, args=(10_000,))
           for _ in range(4)]
for t in hilos:
    t.start()
for t in hilos:
    t.join()

Cómo funciona

  1. Cuatro hilos incrementan todos el mismo total.
  2. with candado: vuelve atómico cada incremento.
  3. join espera a que cada hilo termine.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
281
Tokens
81
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 46 segundos.

Escribe este fragmento

Paso 2 de 4 en Hilos y procesos; paso 29 de 53 en Python pythónico.

← Anterior Siguiente →