Tamaño por hilo
Si repartís `total` items entre `hilos` hilos, devolvé cuántos le tocan a cada uno (redondeando para arriba). Ejemplo: tamano_por_hilo(10, 3) → 4
Entrá y llevá tu progreso —ejercicios, medallas y Pokémon— a cualquier dispositivo. 🔄
Si tu cuenta ya tiene progreso guardado, se carga ese al entrar.
Entraste como . Tu progreso se sincroniza solo. 🔄
Si repartís `total` items entre `hilos` hilos, devolvé cuántos le tocan a cada uno (redondeando para arriba). Ejemplo: tamano_por_hilo(10, 3) → 4
🎯 Meta: conocer los hilos (threading) y cómo partir el trabajo en bloques para repartirlo.
asyncio brilla cuando el trabajo espera (red, disco). Pero si el trabajo es cálculo puro, se usan hilos (threading) o procesos (multiprocessing), que ejecutan en paralelo de verdad.
threadingimport threading
def trabajo(nombre):
print("trabajando", nombre)
h1 = threading.Thread(target=trabajo, args=("A",))
h2 = threading.Thread(target=trabajo, args=("B",))
h1.start(); h2.start() # arrancan en paralelo
h1.join(); h2.join() # esperar a que terminen
Para darle un pedazo a cada hilo, partís la lista en bloques contiguos lo más parejos posible:
def dividir(items, n):
k, m = divmod(len(items), n)
return [items[i*k+min(i,m):(i+1)*k+min(i+1,m)] for i in range(n)]
print(dividir([1, 2, 3, 4, 5], 2)) # [[1, 2, 3], [4, 5]]
A diferencia del round-robin (que intercala), acá cada hilo recibe un tramo seguido — útil cuando el orden importa o los datos están cerca.
⚠️ Dato fino de Python: por el GIL, los hilos no aceleran cálculo puro (para eso van procesos). Pero sí ayudan cuando el trabajo espera I/O. Elegí la herramienta según el tipo de trabajo.
P: Dividir en bloques contiguos (vs round-robin) le da a cada hilo…
+ un tramo seguido de la lista
- elementos intercalados
- toda la lista
> Bloques contiguos mantienen juntos los datos cercanos.
P: Por el GIL, los hilos en Python…
+ no aceleran el cálculo puro (para eso van procesos)
- siempre aceleran todo
- no sirven para nada
> Ayudan cuando el trabajo espera (I/O); para CPU puro, `multiprocessing`.
🕸️ La Líder Opal te espera para dividir en bloques.