92 lines
1.5 KiB
Python
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"
|
|
)
|