Multithread
Procesador
Un procesador es un componente electrónico de una computadora que se encarga de realizar cálculos y ejecutar las instrucciones de un programa informático. Los cores son unidades de procesamiento dentro de un procesador. Cada core puede realizar cálculos por separado, lo que permite al procesador realizar varias tareas a la vez. Los procesadores lógicos son unidades dentro de un procesador que se encargan de realizar operaciones lógicas como comparaciones y cálculos matemáticos básicos.
// Cuántos cores y procesadores lógicos tiene una computadora y cómo están siendo utilizados
import multiprocessing
# Obtener el número de cores y procesadores lógicos disponibles
num_cores = multiprocessing.cpu_count()
print("Número de cores disponibles:", num_cores)
# Crear un nuevo proceso en un core específico
p = multiprocessing.Process(target=some_function, args=(arg1, arg2), kwargs={"arg3": value3},
name="some_process",
affinity=3)
p.start()
¿Qué es multithreading?
Multithreading es una técnica utilizada por los sistemas operativos para permitir que una aplicación o programa utilice más de un procesador o núcleo de procesamiento al mismo tiempo. Esto se logra creando múltiples hilos de ejecución en un solo proceso, cada uno de los cuales se ejecuta de manera concurrente en un núcleo o procesador diferente.
De esta manera, se pueden realizar varias operaciones al mismo tiempo y aprovechar al máximo la capacidad de procesamiento del sistema. Esto puede mejorar significativamente el rendimiento de las aplicaciones y programas que realizan operaciones intensivas en CPU, como el procesamiento de datos o el cálculo de operaciones matemáticas complejas.
Bibliotecas Python
La biblioteca concurrent.futures
proporciona una manera más fiable y portátil de ejecutar código en modo multithread en Python. Además, permite realizar operaciones de forma concurrente en un grupo de elementos, como aplicar una función a cada elemento de una lista, de manera simple y eficiente.
// Some code
import concurrent.futures
def mi_funcion():
# Aquí va el código de la función que se ejecutará en un hilo separado
pass
# Creamos un 'Executor' con el número de hilos que queremos utilizar
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
# Ejecutamos la función en un hilo separado y obtenemos un 'Future' para el resultado
future = executor.submit(mi_funcion)
# Podemos esperar a que el hilo termine y obtener el resultado
resultado = future.result()
Última actualización
¿Te fue útil?