SlideShare una empresa de Scribd logo
TECNOLÓGICO NACIONAL DE MÉXICO
Instituto Tecnológico de Colima
Maestría en Sistemas Computacionales
Tecnologías de Programación Web
UNIDAD II
Concurrencia de Hilos
Agenda
● Unidad II: Concurrencia de Hilos.
○ 2.1 Conceptos.
○ 2.2 Creación y estados de un hilo.
○ 2.3 Sincronización.
■ Secciones críticas.
■ Exclusión mutua.
■ Semáforos.
■ Barreras.
■ Tuberías.
Concurrencia de Hilos
● La CONCURRENCIA es el arte de hacer que una computadora haga (o parezca que
hace) múltiples cosas al mismo tiempo.
● Invita al procesador a cambiar entre diferentes tareas muchas veces por segundo, en
sistemas modernos significa que dos o más cosas se ejecuten simultáneamente en
procesadores separados.
● Concurrencia es difícil.
● Los conceptos básicos son simples, pero los bugs que pueden ocurrir son notablemente
difícil de rastrear. Sin embargo; para muchos proyectos, la concurrencia es la única
manera de obtener el desempeño que que se desea.
INTRODUCCIÓN
Concurrencia de Hilos
PROCESOS
● Un proceso es básicamente un programa en ejecución.
● Colección de uno o más hilos y un sistema de recursos asociados, que corresponde al
concepto de un programa en ejecución.
CONCEPTOS
Concurrencia de Hilos
HILO
● Unidad despachable de trabajo que incluye un contexto de procesador (que incluye
un contador de programa Y un apuntador de stack), así como su propia área de datos.
Se ejecuta de manera secuencial y puede ser interrumpible de tal manera que el
proceso puede cederle turno a otro hilo.
CONCEPTOS
Concurrencia de Hilos
MULTIHILO (MULTITRHEADING)
● Es una técnica en la cual un proceso, ejecutando una aplicación, es dividido en hilos
que pueden ejecutarse concurrentemente.
● Se refiere a la habilidad del SO para soportar múltiples rutas concurrentes de ejecución
dentro de un sólo proceso.
CONCEPTOS
Concurrencia de Hilos
● Dividiendo una sola aplicación en múltiples hilos , el desarrollador obtiene control de
modularidad de la aplicación y de los momentos de los eventos relacionados con ésta.
● Multithreading es útil para aplicaciones que realizan un número esencial de tareas
independientes.
○ Un ejemplo es un servidor de bases de datos que procesa numerosas peticiones de los
clientes.
● Existen dos enfoques, el enfoque tradicional que no es basado en multithreading y el
cual se conoce como enfoque de un sólo hilo (single thread approach) y el enfoque
basado en multithreading.
CONCEPTOS
Concurrencia de Hilos
CONCURRENCIA
● Concurrencia es la existencia simultánea de varios procesos en ejecución.
● Ojo concurrencia existencia simultánea (concurrencia) no implica ejecución simultánea
(paralelismo)
CONCEPTOS
Concurrencia de Hilos
CONCEPTOS
Concurrencia de Hilos
CONCEPTOS
● En la mayoría de los casos, se crea concurrencia para que el trabajo pueda continuar
mientras el programa está esperando que ocurra la E / S.
○ Un servidor puede comenzar a procesar una nueva solicitud de red mientras espera que
lleguen los datos de una solicitud anterior.
○ Un programa interactivo puede representar una animación o realizar un cálculo mientras
espera que el usuario presione una tecla.
○ Si bien una persona puede escribir más de 500 caracteres por minuto, una computadora
puede realizar miles de millones de instrucciones por segundo.
○ Por lo tanto, puede ocurrir una gran cantidad de procesamiento entre las pulsaciones de
teclas individuales, incluso cuando se escribe rápidamente.
○ Teóricamente es posible administrar todo este cambio entre actividades dentro de su
programa, pero sería virtualmente imposible hacerlo bien.
Concurrencia de Hilos
● En cambio, podemos confiar en Python y el sistema operativo para que se encarguen
de la complicada parte de conmutación, mientras que creamos objetos que parecen
ejecutarse de forma independiente, pero a la vez. Estos objetos se llaman hilos; en
Python tienen una API muy simple.
CONCEPTOS
Concurrencia de Hilos
ESTADOS DE UN HILO
● Los hilos al igual que un proceso, tienen estados de ejecución y deben sincronizarse
con otros hilos.
● Los principales estados de un hilo son: en ejecución (running), listo (ready), y
bloqueado (blocked)
● Si un proceso es intercambiado, todos su hilos son necesariamente intercambiados, ya
que comparten el mismo espacio de direcciones que el proceso.
CREACIÓN Y ESTADOS DE UN HILO
Concurrencia de Hilos
● Existen cuatro operaciones básicas asociadas con el cambio de estado en un hilo:
○ Generado: Cuando se genera un proceso, un hilo para ese proceso también es generado.
○ Bloqueado: Cuando un hilo necesita esperar por un evento, éste es bloqueado. El
procesador cede el paso a otro hilo en el mismo o diferente procesos.
○ Desbloqueado: Cuando un evento para el cual el hilo fue bloqueado ocurre, el hilo se
mueve a la cola de “listo”
○ Finalizado: Cuando un hilo se completa, este registra su contexto y su pila es desasignada
CREACIÓN Y ESTADOS DE UN HILO
Concurrencia de Hilos
CREACIÓN DE HILOS EN PYTHON
● API threading de Python
○ https://docs.python.org/3/library/threading.html
● Lo primero que hay que hacer es importar la clase Thread del módulo threading
● Para crear un hilo en python se tiene que hacer que una clase funcione como un hilo
● Después definir un método run en la clase, la cual se ejecutará cuando se mande
llamar el método start de cualquier objeto en la clase MyThread
CREACIÓN Y ESTADOS DE UN HILO
Concurrencia de Hilos
● Se puede utilizar la función sleep para hacer que el hilo “duerma”, con la finalidad de
que el código no se ejecute tan rápido que no se pueda notar ningún cambio.
CREACIÓN Y ESTADOS DE UN HILO
Concurrencia de Hilos
● Para crear el hilo, es necesario crear algunos objetos de la clase que soporta hilos,
llamando el método start para cada objeto, ejecutando el método run de cada objeto.
● Se manda llamar el método join de cada objeto, con la finalidad de esperar hasta que el
hilo termine.
CREACIÓN Y ESTADOS DE UN HILO
Práctica
● Realice una práctica en python que permite ejecutar dos hilos:
● Un hilo deberá esperar por la entrada de datos desde teclado. Mientras
que, el otro hilo deberá continuar su ejecución normal y realizar el
cálculo del cuadrado de un contador que se autoincrementa dentro de un
ciclo while mientras que el hilo que está esperando por datos de teclado
está vivo.
● Deberá mostrar un mensaje que diga: “Mientras escribías el_texto se
calculó el cuadrado
CREACIÓN Y ESTADOS DE UN HILO
Tarea
Investigar los inconvenientes de la utilización de hilos y la solución a estos inconvenientes
y realizar un reporte de investigación máximo de 6 cuartillas por equipo, considerando los
siguientes aspectos:
● Exclusión mutua.
● Hambruna.
● Secciones críticas.
● Deadlock
● Livelock
● Condiciones de carrera
Concurrencia de Hilos
MEMORIA COMPARTIDA:
● Su principal problema es también su principal ventaja.
● Los hilos tienen acceso a toda la memoria y a todas las variables en programa
○ Puede causar inconsistencias en el estado del programa.
○ Ej. Cuando dos personas quieren encender al mismo tiempo la luz en un cuarto que tiene
dos apagadores.
■ Cada persona (hilo) espera que su acción encienda la lámpara (una variable) activada, pero el valor
resultante (la lámpara está apagada) es inconsistente con las expectativas.
■ Ahora imaginen si dos hilos estaban transfiriendo fondos entre cuentas bancarias o administrar el el
control de crucero en un vehículo.
PROBLEMAS CON LOS HILOS
La solución a este problema es sincronizar el acceso a
cualquier código que leao e escriba variables compartidas
Concurrencia de Hilos
● Existen diversas formas de realizar la sincronización.
● Ésta funcionan; sin embargo, bugs originados por un inapropiado uso de la
sincronización son realmente de rastrear debido a que el orden en que los hilos
desempeñan sus operaciones es inconsistente.
● Usualmente es más seguro forzar la comunicación entre hilo a través del uso de una
estructura de datos ligera que ya utilice bloqueos de manera adecuada. Python ofrece
la clase quueue.Queue para ésto.
● En algunos casos, estas desventajas pueden ser compensadas por la única ventaja de
permitir la memoria compartida: es rápido.
● Si múltiples hilos necesitan acceso a una gran estructura de datos, la memoria
compartida puede proporcionar este acceso rápidamente
Concurrencia de Hilos
● Para administrar de manera eficiente la memoria, la recolección de elementos no
utilizados y las llamadas al código de máquina en las bibliotecas, Python tiene una
utilidad llamada bloqueo de intérprete global o GIL. Es imposible desactivarlo, y
significa que los hilos son inútiles en Python por una cosa en la que sobresalen en
otros lenguajes: el procesamiento paralelo.
● El principal efecto del GIL es evitar que dos hilos funcionen al mismo tiempo, incluso
si tienen trabajo por hacer (usar CPU), por lo que está perfectamente bien que varios
hilos accedan al disco o a la red; el GIL se lanza tan pronto como el hilo comienza a
esperar algo.
● Sin embargo; En python 3 una librería de multiporcesamiento fue diseñada cuando
trabajos CPU-intensivos necesitan ejecutarse de manera paralela en múltiples núcleso
disponibles.
Concurrencia de Hilos
● Otra limitación de los hilos, es el costo de mantenimiento del hilo. Cada hilo toma
cierta cantidad de memoria (en el proceso y en el kernel del SO) para registrar el
estado del hilo.
● Intercambiar entre hilos también hace uso de una pequeña cantidad de tiempo de
CPU.
● La solución es reutilzar el hilo para que realice múltiples trabajos. Python proporciona
la función ThreadPool para el manejo de ésto.

Más contenido relacionado

PDF
De Threads a CompletableFutures
PPTX
Uso de hilos
PPTX
Uso de threads en C#
PDF
Atix23
PDF
PPTX
Hilos hebras
PPT
Clase 3 ene 8
De Threads a CompletableFutures
Uso de hilos
Uso de threads en C#
Atix23
Hilos hebras
Clase 3 ene 8

Similar a tecnologías de programación concurrente y manejo de hilos (20)

PDF
Hilos con Posix
PDF
Lps 17 hilos
PPTX
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
PDF
PPT CAP 2 Proceso e hilo.pdf
PPTX
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
DOCX
Sistemas operativos informe
DOCX
Sistemas Operativos
PPTX
PROCESOS DE HILOS Y SU IMPORTANCIA EN LA RED.pptx
PDF
PPTX
Equipo 2 - Exposición.pptx
PDF
Docker y Kubernetes, en busca de la alta disponibilidad
PDF
DIAPOSITIVAS UNIDAD3.pdf
PPTX
Procesos Ligeros: Hilos o Hebras
 
PPT
Sincronización entre procesos
DOCX
Administrador de procesos
PPTX
Chap 15apin
PDF
Procesos e hilos_parte_3
PPTX
Unidad 4 tópicos avanzados de programación
PPTX
programacion concurrente java.pptx
PPTX
Apache Storm: Introduccion
Hilos con Posix
Lps 17 hilos
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
PPT CAP 2 Proceso e hilo.pdf
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Sistemas operativos informe
Sistemas Operativos
PROCESOS DE HILOS Y SU IMPORTANCIA EN LA RED.pptx
Equipo 2 - Exposición.pptx
Docker y Kubernetes, en busca de la alta disponibilidad
DIAPOSITIVAS UNIDAD3.pdf
Procesos Ligeros: Hilos o Hebras
 
Sincronización entre procesos
Administrador de procesos
Chap 15apin
Procesos e hilos_parte_3
Unidad 4 tópicos avanzados de programación
programacion concurrente java.pptx
Apache Storm: Introduccion
Publicidad

Último (20)

PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
CIRSOC-201-2024_Proyecto de Reglamento Argentino de Estructuras de Hormigón
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
Metodologías Activas con herramientas IAG
PPTX
caso clínico iam clinica y semiología l3.pptx
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PPTX
Presentación de la Cetoacidosis diabetica.pptx
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
CIRSOC-201-2024_Proyecto de Reglamento Argentino de Estructuras de Hormigón
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
2.0 Introduccion a processing, y como obtenerlo
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
Metodologías Activas con herramientas IAG
caso clínico iam clinica y semiología l3.pptx
V UNIDAD - PRIMER GRADO. del mes de agosto
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
ciencias-1.pdf libro cuarto basico niños
Escuelas Desarmando una mirada subjetiva a la educación
Presentación de la Cetoacidosis diabetica.pptx
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Publicidad

tecnologías de programación concurrente y manejo de hilos

  • 1. TECNOLÓGICO NACIONAL DE MÉXICO Instituto Tecnológico de Colima Maestría en Sistemas Computacionales Tecnologías de Programación Web UNIDAD II Concurrencia de Hilos
  • 2. Agenda ● Unidad II: Concurrencia de Hilos. ○ 2.1 Conceptos. ○ 2.2 Creación y estados de un hilo. ○ 2.3 Sincronización. ■ Secciones críticas. ■ Exclusión mutua. ■ Semáforos. ■ Barreras. ■ Tuberías.
  • 3. Concurrencia de Hilos ● La CONCURRENCIA es el arte de hacer que una computadora haga (o parezca que hace) múltiples cosas al mismo tiempo. ● Invita al procesador a cambiar entre diferentes tareas muchas veces por segundo, en sistemas modernos significa que dos o más cosas se ejecuten simultáneamente en procesadores separados. ● Concurrencia es difícil. ● Los conceptos básicos son simples, pero los bugs que pueden ocurrir son notablemente difícil de rastrear. Sin embargo; para muchos proyectos, la concurrencia es la única manera de obtener el desempeño que que se desea. INTRODUCCIÓN
  • 4. Concurrencia de Hilos PROCESOS ● Un proceso es básicamente un programa en ejecución. ● Colección de uno o más hilos y un sistema de recursos asociados, que corresponde al concepto de un programa en ejecución. CONCEPTOS
  • 5. Concurrencia de Hilos HILO ● Unidad despachable de trabajo que incluye un contexto de procesador (que incluye un contador de programa Y un apuntador de stack), así como su propia área de datos. Se ejecuta de manera secuencial y puede ser interrumpible de tal manera que el proceso puede cederle turno a otro hilo. CONCEPTOS
  • 6. Concurrencia de Hilos MULTIHILO (MULTITRHEADING) ● Es una técnica en la cual un proceso, ejecutando una aplicación, es dividido en hilos que pueden ejecutarse concurrentemente. ● Se refiere a la habilidad del SO para soportar múltiples rutas concurrentes de ejecución dentro de un sólo proceso. CONCEPTOS
  • 7. Concurrencia de Hilos ● Dividiendo una sola aplicación en múltiples hilos , el desarrollador obtiene control de modularidad de la aplicación y de los momentos de los eventos relacionados con ésta. ● Multithreading es útil para aplicaciones que realizan un número esencial de tareas independientes. ○ Un ejemplo es un servidor de bases de datos que procesa numerosas peticiones de los clientes. ● Existen dos enfoques, el enfoque tradicional que no es basado en multithreading y el cual se conoce como enfoque de un sólo hilo (single thread approach) y el enfoque basado en multithreading. CONCEPTOS
  • 8. Concurrencia de Hilos CONCURRENCIA ● Concurrencia es la existencia simultánea de varios procesos en ejecución. ● Ojo concurrencia existencia simultánea (concurrencia) no implica ejecución simultánea (paralelismo) CONCEPTOS
  • 10. Concurrencia de Hilos CONCEPTOS ● En la mayoría de los casos, se crea concurrencia para que el trabajo pueda continuar mientras el programa está esperando que ocurra la E / S. ○ Un servidor puede comenzar a procesar una nueva solicitud de red mientras espera que lleguen los datos de una solicitud anterior. ○ Un programa interactivo puede representar una animación o realizar un cálculo mientras espera que el usuario presione una tecla. ○ Si bien una persona puede escribir más de 500 caracteres por minuto, una computadora puede realizar miles de millones de instrucciones por segundo. ○ Por lo tanto, puede ocurrir una gran cantidad de procesamiento entre las pulsaciones de teclas individuales, incluso cuando se escribe rápidamente. ○ Teóricamente es posible administrar todo este cambio entre actividades dentro de su programa, pero sería virtualmente imposible hacerlo bien.
  • 11. Concurrencia de Hilos ● En cambio, podemos confiar en Python y el sistema operativo para que se encarguen de la complicada parte de conmutación, mientras que creamos objetos que parecen ejecutarse de forma independiente, pero a la vez. Estos objetos se llaman hilos; en Python tienen una API muy simple. CONCEPTOS
  • 12. Concurrencia de Hilos ESTADOS DE UN HILO ● Los hilos al igual que un proceso, tienen estados de ejecución y deben sincronizarse con otros hilos. ● Los principales estados de un hilo son: en ejecución (running), listo (ready), y bloqueado (blocked) ● Si un proceso es intercambiado, todos su hilos son necesariamente intercambiados, ya que comparten el mismo espacio de direcciones que el proceso. CREACIÓN Y ESTADOS DE UN HILO
  • 13. Concurrencia de Hilos ● Existen cuatro operaciones básicas asociadas con el cambio de estado en un hilo: ○ Generado: Cuando se genera un proceso, un hilo para ese proceso también es generado. ○ Bloqueado: Cuando un hilo necesita esperar por un evento, éste es bloqueado. El procesador cede el paso a otro hilo en el mismo o diferente procesos. ○ Desbloqueado: Cuando un evento para el cual el hilo fue bloqueado ocurre, el hilo se mueve a la cola de “listo” ○ Finalizado: Cuando un hilo se completa, este registra su contexto y su pila es desasignada CREACIÓN Y ESTADOS DE UN HILO
  • 14. Concurrencia de Hilos CREACIÓN DE HILOS EN PYTHON ● API threading de Python ○ https://docs.python.org/3/library/threading.html ● Lo primero que hay que hacer es importar la clase Thread del módulo threading ● Para crear un hilo en python se tiene que hacer que una clase funcione como un hilo ● Después definir un método run en la clase, la cual se ejecutará cuando se mande llamar el método start de cualquier objeto en la clase MyThread CREACIÓN Y ESTADOS DE UN HILO
  • 15. Concurrencia de Hilos ● Se puede utilizar la función sleep para hacer que el hilo “duerma”, con la finalidad de que el código no se ejecute tan rápido que no se pueda notar ningún cambio. CREACIÓN Y ESTADOS DE UN HILO
  • 16. Concurrencia de Hilos ● Para crear el hilo, es necesario crear algunos objetos de la clase que soporta hilos, llamando el método start para cada objeto, ejecutando el método run de cada objeto. ● Se manda llamar el método join de cada objeto, con la finalidad de esperar hasta que el hilo termine. CREACIÓN Y ESTADOS DE UN HILO
  • 17. Práctica ● Realice una práctica en python que permite ejecutar dos hilos: ● Un hilo deberá esperar por la entrada de datos desde teclado. Mientras que, el otro hilo deberá continuar su ejecución normal y realizar el cálculo del cuadrado de un contador que se autoincrementa dentro de un ciclo while mientras que el hilo que está esperando por datos de teclado está vivo. ● Deberá mostrar un mensaje que diga: “Mientras escribías el_texto se calculó el cuadrado CREACIÓN Y ESTADOS DE UN HILO
  • 18. Tarea Investigar los inconvenientes de la utilización de hilos y la solución a estos inconvenientes y realizar un reporte de investigación máximo de 6 cuartillas por equipo, considerando los siguientes aspectos: ● Exclusión mutua. ● Hambruna. ● Secciones críticas. ● Deadlock ● Livelock ● Condiciones de carrera
  • 19. Concurrencia de Hilos MEMORIA COMPARTIDA: ● Su principal problema es también su principal ventaja. ● Los hilos tienen acceso a toda la memoria y a todas las variables en programa ○ Puede causar inconsistencias en el estado del programa. ○ Ej. Cuando dos personas quieren encender al mismo tiempo la luz en un cuarto que tiene dos apagadores. ■ Cada persona (hilo) espera que su acción encienda la lámpara (una variable) activada, pero el valor resultante (la lámpara está apagada) es inconsistente con las expectativas. ■ Ahora imaginen si dos hilos estaban transfiriendo fondos entre cuentas bancarias o administrar el el control de crucero en un vehículo. PROBLEMAS CON LOS HILOS La solución a este problema es sincronizar el acceso a cualquier código que leao e escriba variables compartidas
  • 20. Concurrencia de Hilos ● Existen diversas formas de realizar la sincronización. ● Ésta funcionan; sin embargo, bugs originados por un inapropiado uso de la sincronización son realmente de rastrear debido a que el orden en que los hilos desempeñan sus operaciones es inconsistente. ● Usualmente es más seguro forzar la comunicación entre hilo a través del uso de una estructura de datos ligera que ya utilice bloqueos de manera adecuada. Python ofrece la clase quueue.Queue para ésto. ● En algunos casos, estas desventajas pueden ser compensadas por la única ventaja de permitir la memoria compartida: es rápido. ● Si múltiples hilos necesitan acceso a una gran estructura de datos, la memoria compartida puede proporcionar este acceso rápidamente
  • 21. Concurrencia de Hilos ● Para administrar de manera eficiente la memoria, la recolección de elementos no utilizados y las llamadas al código de máquina en las bibliotecas, Python tiene una utilidad llamada bloqueo de intérprete global o GIL. Es imposible desactivarlo, y significa que los hilos son inútiles en Python por una cosa en la que sobresalen en otros lenguajes: el procesamiento paralelo. ● El principal efecto del GIL es evitar que dos hilos funcionen al mismo tiempo, incluso si tienen trabajo por hacer (usar CPU), por lo que está perfectamente bien que varios hilos accedan al disco o a la red; el GIL se lanza tan pronto como el hilo comienza a esperar algo. ● Sin embargo; En python 3 una librería de multiporcesamiento fue diseñada cuando trabajos CPU-intensivos necesitan ejecutarse de manera paralela en múltiples núcleso disponibles.
  • 22. Concurrencia de Hilos ● Otra limitación de los hilos, es el costo de mantenimiento del hilo. Cada hilo toma cierta cantidad de memoria (en el proceso y en el kernel del SO) para registrar el estado del hilo. ● Intercambiar entre hilos también hace uso de una pequeña cantidad de tiempo de CPU. ● La solución es reutilzar el hilo para que realice múltiples trabajos. Python proporciona la función ThreadPool para el manejo de ésto.