Distribuye cálculos matemáticos o de limpieza de texto muy pesados entre todos los núcleos de tu procesador físico.
Distribute heavy mathematical or text-cleaning transformations across all cores of your physical processor.
Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.
This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.
Usar joblib para procesar una lista de registros en paralelo y comparar el patrón con un procesamiento secuencial tradicional.
Use joblib to process a list of records in parallel and compare the pattern with traditional sequential processing.
| id | valor | texto |
|---|---|---|
| 1 | 10 | Miami |
| 2 | 25 | Hialeah |
| 3 | 40 | Doral |
from joblib import Parallel, delayed
def tarea_pesada(dato):
return dato * dato
jobs = Parallel(n_jobs=-1)
resultados = jobs(delayed(tarea_pesada)(i) for i in datos)| valor | resultado |
|---|---|
| 10 | 100 |
| 25 | 625 |
| 40 | 1600 |
# ==========================================================
# Python Advanced Topic 08
# Real Parallelism in Transformations
# ==========================================================
# pip install joblib pandas
from joblib import Parallel, delayed
import pandas as pd
import time
df = pd.DataFrame({
"id": [1, 2, 3, 4, 5],
"valor": [10, 25, 40, 75, 100],
"texto": [" Miami ", " Hialeah ", " Doral ", " Kendall ", " Homestead "]
})
def tarea_pesada(row):
cleaned_text = row["texto"].strip().upper()
score = row["valor"] ** 2
return {
"id": row["id"],
"texto_limpio": cleaned_text,
"score_calculado": score
}
start = time.perf_counter()
resultados = Parallel(n_jobs=-1)(
delayed(tarea_pesada)(row) for _, row in df.iterrows()
)
seconds = round(time.perf_counter() - start, 4)
out = pd.DataFrame(resultados)
out.to_csv("parallel_transform_results.csv", index=False)
print(out)
print(f"Seconds: {seconds}")id texto_limpio score_calculado 0 1 MIAMI 100 1 2 HIALEAH 625 2 3 DORAL 1600 3 4 KENDALL 5625 4 5 HOMESTEAD 10000 Seconds: 0.04
El paralelismo real convierte la computadora local en un motor de procesamiento más eficiente cuando las tareas son independientes y pesadas.
Real parallelism turns a local computer into a more efficient processing engine when tasks are independent and heavy.