Curso-lenguaje-python/python-ofensivo/08_librerias/07_threading_vs_multiprocessing.py

92 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
Ejemplo práctico para ver la diferencia entre ejecutar un programa con hilos, con procesos y
sin ninguno de los anteriores.
"""
import time
import requests
import threading
import multiprocessing
dominios = {
"https://google.com",
"https://xvideos.com",
"https://wikimedia.org",
"https://yahoo.com"
}
# Ejecución sin hilos ni procesos separados
start_time = time.time()
for url in dominios:
r = requests.get(url)
print(
f"\n[+] URL {url}: {len(r.content)} bytes"
)
end_time = time.time()
print(
f"\n[i] Tiempo de ejecución SIN hilos: {end_time - start_time} segundos\n"
)
def realizar_peticion(url):
r = requests.get(url)
print(
f"\n[+] URL {url}: {len(r.content)} bytes"
)
# Ejecución con hilos
start_time = time.time()
hilos = []
for url in dominios:
hilo = threading.Thread(
target=realizar_peticion,
args=(url,)
)
hilo.start()
hilos.append(hilo)
for hilo in hilos:
hilo.join()
end_time = time.time()
print(
f"\n[i] Tiempo de ejecución CON hilos: {end_time - start_time} segundos\n"
)
# Ejecución con procesos
start_time = time.time()
procesos = []
for url in dominios:
proceso = multiprocessing.Process(
target=realizar_peticion,
args=(url,)
)
proceso.start()
procesos.append(proceso)
for proceso in procesos:
proceso.join()
end_time = time.time()
print(
f"\n[i] Tiempo de ejecución CON procesos: {end_time - start_time} segundos\n"
)