[go: up one dir, main page]

100% encontró este documento útil (1 voto)
398 vistas7 páginas

Hilos en Python

Este documento explica los hilos en Python. Define un hilo como una técnica de programación que permite ejecutar varias operaciones simultáneamente en el mismo espacio de proceso. Explica que los hilos comparten datos pero también pueden comunicarse entre sí. Luego detalla algunas ventajas de usar hilos como mejorar la reacción de aplicaciones y requerir menos recursos que procesos separados. Finalmente, cubre conceptos como librerías de hilos, objetos Thread, y ejemplos de código.

Cargado por

ESTEFANIA ABRIL
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
398 vistas7 páginas

Hilos en Python

Este documento explica los hilos en Python. Define un hilo como una técnica de programación que permite ejecutar varias operaciones simultáneamente en el mismo espacio de proceso. Explica que los hilos comparten datos pero también pueden comunicarse entre sí. Luego detalla algunas ventajas de usar hilos como mejorar la reacción de aplicaciones y requerir menos recursos que procesos separados. Finalmente, cubre conceptos como librerías de hilos, objetos Thread, y ejemplos de código.

Cargado por

ESTEFANIA ABRIL
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

Universidad Técnica de Ambato

Facultad de Ingeniería en Sistemas, Electrónica e


Industrial
Carrera de Telecomunicaciones
Datos Informativos:

Nombre: Estefanía Abril Módulo: Programación Avanzada


Curso: 3° Telecomunicaciones “A” Docente: Ing. Patricio Encalada
Fecha: 27-06-2019 Consulta

HILOS EN PYTHON

1. Definición.-
“Hilos” se define como una técnica de programación, la cual permite que una
aplicación ejecute simultáneamente varias operaciones en el mismo espacio de
proceso, a esta se le denomina “Threading”. A cada flujo de ejecución que se origina
durante el procesamiento se lo llama hilo o subproceso, los cuales son capaces de
realizar o no una misma tarea. En Python, el módulo “threading” hace posible la
programación con hilos. (Ceballos, 2017)

Cabe destacar que, cada hilo posee sus propios datos locales, pero también puede
compartir todos sus recursos con un proceso de manera que se complementen varios
hilos entre sí. La comunicación entre hilos se efectúa mediante la memoria global,
para cual es necesario construcciones de sincronización que manejen concurrencia.
(Pineda, s.f)

2. ¿Para qué sirve?


La técnica de programación multi-hilos o también conocida como multi-threading
permite desacoplar tareas que no tienen dependencia secuencial. Los hilos se pueden
usar para mejorar el grado de reacción de las aplicaciones que aceptan entradas del
usuario mientras otras tareas se ejecutan en segundo plano. (Van Rossum, 2009)
Además al aplicar esta técnica en nuestros códigos tenemos ciertas ventajas como:
arios

 Los hilos en ejecución de un proceso comparten el mismo espacio de datos que


el hilo principal y pueden, por tanto, tener acceso a la misma información o
comunicarse entre sí más fácilmente que si estuvieran en procesos separados.
(Ceballos, 2017)

 Ejecutar un proceso de varios hilos suele requerir menos recursos de memoria


que ejecutar lo equivalente en procesos separados. Permite simplificar el
diseño de las aplicaciones que necesitan ejecutar varias operaciones de manera
concurrente. (Ceballos, 2017)

 Los hilos se utilizan para facilitar el diseño de aplicaciones donde se requiera


la ejecución de varias operaciones simultánemente.

2.1 Aplicaciones

Existen multitud de situaciones en las que la utilización de hilos puede resultar


interesante, por ejemplo: una aplicación que realice varias descargas de ficheros en
paralelo, una aplicación que pueda abrir o guardar un documento de un gran tamaño
mientras se está editando otro, aplicaciones que permitan lanzar varias operaciones de
búsqueda al mismo tiempo, aplicaciones que prueben el funcionamiento de un
conjunto de sistemas simultáneamente, etc. (Ceballos, 2017)

3. Librerías, Funciones y Métodos


3.1 Librerías

Las librerías son archivos que contienen conjuntos de funciones que facilitan la
tarea de programar, como es el caso de hilos en Python. Para ello es necesario la
importación de librerías, de la siguiente manera:

import threading
import time

3.2 Funciones

Para trabajar con hilos en Python, se requiere la definición de funciones, las cuales
se ejecutarán al ser llamadas en los hilos correspondientes. Cabe destacar que las
funciones pueden o no tener parámetros de la siguiente manera:

def nombre_función():
código
código
…………
def nombre_función(parametro1,parametro2, …………):
código
código
…………

3.3 Objeto Thread

Un objeto Thread, en el lenguaje Python, representa una operación, la cual se


ejecuta como un subproceso independiente, es decir, representa a un hilo. (Ceballos,
2017)

3.3.1 Módulos

En python existen dos módulos que nos permiten tratar con hilos. El
módulo thread es el de más bajo nivel y tiene algunas funciones que nos permiten
trabajar con hilos. El módulo threading es de más alto nivel y tiene la clase Thread,
que representa un hilo. (ChuWiki, 2009)

Módulo thread

Es uno de los métodos para crear un hilo, en donde se debe definir una
función start_new_thread() del módulo thread. A esta función únicamente debemos
pasarle la función python que queremos que se ejecute en un hilo y la tupla que hará
de parámetros de dicha función; de la siguiente forma: (ChuWiki, 2009)

def funcion (inicio, fin):

Una vez que se ha codificado lo que se requiere que haga la función, se procede a
arrancarla como un hilo, otorgándole parámetros como un 12 y un 28. Finalmente,
haremos la llamada a la función start_new_thread() de la siguiente forma: (ChuWiki,
2009)

import thread
...
thread.start_new_thread(funcion, (12,28))

y eso es todo, la función comenzará a ejecutarse en un hilo separado y hará lo que


codifiquemos en ella.
Ejemplo:

1. import threading
2.
3. def contar():
4. '''''Contar hasta cien'''
5. contador = 0
6. while contador<100:
7. contador+=1
8. print('Hilo:',
9. threading.current_thread().getName(),
10. 'con identificador:',
11. threading.current_thread().ident,
12. 'Contador:', contador)
13.
14. hilo1 = threading.Thread(target=contar)
15. hilo2 = threading.Thread(target=contar)
16. hilo1.start()
17. hilo2.start()

Módulo threading

Un módulo de más alto nivel que nos permite hacer hilos en python es threading.
Este módulo, se caracteriza por tener una clase Thread, que es la que representa el
hilo. Para hacer un hilo, debemos heredar de ella y definir el método run(). Lo que
pongamos en ese método se ejecutará en un hilo aparte. Para arrancar el hilo, debemos
instanciar la clase hija de Thread que hayamos hecho y llamar a su método start(). Los
pasos básicos con estos. (ChuWiki, 2009)

1. from threading import Thread


2.
3. class MiHilo(Thread):
4. def run():
5. #Aqui el codigo del hilo
6. ...
7. # Arranque del hilo
8. hilo = MiHilo()
9. hilo.start()

3.4 Hilos con argumentos

Para que los programas que utilicen hilos tengan un mejor comportamiento existe
la posibilidad de enviar valores a los hilos para que los puedan utilizar. Por este motivo
existen los argumentos “args” y “kwargs” en el constructor. (Ceballos, 2017)

En el ejemplo que os presentamos a continuación se utilizan estos argumentos para


pasar una variable con el número de hilo que se ejecuta en un momento dado y un
diccionario con tres valores que ajustan el funcionamiento del contador en todos los
hilos:

1. import threading
2.
3. def contar(num_hilo, **datos):
4. contador = datos['inicio']
5. incremento = datos['incremento']
6. limite = datos['limite']
7. while contador<=limite:
8. print('hilo:', num_hilo, 'contador:', contador)
9. contador+=incremento
10.
11. for num_hilo in range(3):
12. hilo = threading.Thread(target=contar,
13. args=(num_hilo,),
14. kwargs={'inicio':0,
15. 'incremento':1,
16. 'limite':10})
17. hilo.start()

3.5 Hilos que funcionan durante un tiempo

Los Hilos con tiempo es otra de las opciones que ofrece esta técnica de
programación, básicamente consiste en limitar el funcionamiento de los hilos a un
tiempo determinado. Esto se lo realiza con la importación de la librería time. El
módulo time se utiliza para obtener el momento inicial y calcular el tiempo límite de
ejecución. (Pherkad, 2016)

3.6 Demonios

Existen dos modos diferentes de finalizar un programa basado en hilos.

 El hilo principal del programa espera a que todos los hilos creados
con Thread terminan su trabajo.  start() (Pherkad, 2016)

 En el segundo modo, el hilo principal del programa puede finalizar aunque


uno o más hilos hilos no hayan terminado su tarea; teniendo en cuenta que
cuando finalice el hilo principal también lo harán estos hilos especiales
llamados demonios.  join () (Pherkad, 2016)
1. import time, os, threading
2.
3. def chequear(nombre):
4. código
5. Codigo……
6.
7. time.sleep(0.1)
8.
9. def escribir(nombre):
10. código
11. Codigo…….
12.
13. hilo1 = threading.Thread(name='chequear',
14. target=chequear,
15. args=(nombre,),
16. daemon=True)
17.
18. hilo2 = threading.Thread(name='escribir',
19. target=escribir,
20. args=(nombre,))
21. hilo1.start()
22. hilo2.start()
23.
24. hilo1.join()
25. print(hilo1.isAlive())

4. Ejemplo de codificación

5. Bibliografía
Ceballos, J. (13 de Julio de 2017). Curso Python. Volumen XX: Hilos (Threading). Parte I .
Obtenido de Redes Zone: https://www.redeszone.net/2017/07/13/curso-python-
volumen-xx-hilos-parte-i/

ChuWiki. (24 de Febrero de 2009). Hilos en python. Obtenido de ChuWiki:


http://chuwiki.chuidiang.org/index.php?title=Hilos_en_python

Pherkad. (16 de Diciembre de 2016). Threading: programación con hilos (I). Obtenido de
Python 3 para Impacientes: https://python-para-
impacientes.blogspot.com/2016/12/threading-programacion-con-hilos-i.html

Pineda, J. (s.f). Programación Paralela con Python. Medellín: Universidad EAFIT.

Van Rossum, G. (2009). El tutorial de Python. Argentina.

También podría gustarte