PDF de programación - Programación concurrente en Python 2.4

Imágen de pdf Programación concurrente en Python 2.4

Programación concurrente en Python 2.4gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 23 de Enero del 2018)
1.210 visualizaciones desde el 23 de Enero del 2018
491,5 KB
18 paginas
Creado hace 17a (06/06/2006)
Programación concurrente en Python2.4

Alumnos:

Pablo Nebreda Cespedosa
Yaiza Temprado Rodríguez



Grupo < 02 >

Programación Concurrente y Distribuida
5º Ingeniería en Informática
Escuela Superior Politécnica
Universidad Europea de Madrid
Curso 2005-2006

Profesor :
José Carlos Cortizo Pérez
Departamento de Sistemas Informáticos

Concurrencia en Python
______________________________________________________________________________________

Programación Concurrente y Distribuida

ÍNDICE

1. INTRODUCCIÓN A PYTHON.......................................................................3

1.1. Características del lenguaje............................................................................3

1.2. Tipos de datos................................................................................................5

2. CONCURRENCIA EN PYTHON....................................................................7

2.1 El módulo Thread...........................................................................................7

2.2 Locks...............................................................................................................8

2.3 El Global Interpreter Lock..............................................................................9

2.4 El módulo Threading .....................................................................................9
2.4.1 El objeto Thread.........................................................................................10
2.4.2 Conditions..................................................................................................11

3. RESOLUCIÓN DE PROBLEMAS CONCURRENTES...............................12

3.2 El problema del productor consumidor.........................................................13

3.3 El problema de los lectores escritores...........................................................15

4. Bibliografía.....................................................................................................18

-2-

Concurrencia en Python
______________________________________________________________________________________

Programación Concurrente y Distribuida

1. Introducción a Python.

1.1. Características del lenguaje.

Python es un lenguaje de programación fácil de aprender y potente. Tiene eficaces
estructuras de datos de alto nivel y una solución de programación orientada a objetos
simple pero eficaz. La elegante sintaxis de Python, su gestión de tipos dinámica y su
naturaleza interpretada hacen de él el lenguaje ideal para guiones (scripts) y desarrollo
rápido de aplicaciones, en muchas áreas y en la mayoría de las plataformas.

Además, la característica de ser orientado a objetos le proporciona la capacidad de ser
usado para la programación de aplicaciones reales, a diferencia de otros lenguajes de
script como Perl o Bash.

Aunque no nos extenderemos demasiado con la introducción a la sintaxis, pues no es el
objetivo de este documento, sí que repasaremos algunas de las características más
llamativas de Python. No obstante, si el lector desea aprender más sobre este interesante
lenguaje, puede encontrar una gran cantidad de información gratuita en la red1.

Alguna de sus características son:

• Asignación dinámica de tipos:

En Python no es necesario definir las variables antes de que éstas sean
referenciadas y utilizadas. En el momento en el que se usa la variable por primera
vez, ésta se crea, asignándosele dinámicamente el tipo correspondiente al valor
que se le esté asignando. Por ejemplo:

aux1 = “hola”
aux2 = 3.5

# acabamos de crear una variable string
# acabamos de crear una variable float

• Tipos básicos y complejos:

Además de los tipos básicos inherentes a cualquier lenguaje de programación
actual (enteros, float, strings), existen otros más complejos, como las listas los
diccionarios o las tuplas. Más adelante veremos exactamente en qué consiste cada
uno de ellos.

• Clases e instancias, módulos y paquetes:

Como hemos dicho, Python es un lenguaje orientado a objetos, por lo que cuenta
con la estructuración en clases propia de este paradigma. Además, éstas pueden
agruparse después de módulos, y estos a su vez, en paquetes; creando estructuras
cada vez más abstractas.

1Dive into Python: http://diveintopython.org/

-3-

Concurrencia en Python
______________________________________________________________________________________

Programación Concurrente y Distribuida

• Funciones:

En Python todo, absolutamente todo, es una función. Todas las clases, las
variables y paquetes son funciones. Con esto estamos asegurando que cualquier
estructura devuelve un valor y puede recibir una serie de parámetros.

• Excepciones:

Como todo lenguaje que se precie, Python también cuenta con un juego de
excepciones predefinidas. Aunque proporciona la posibilidad de que el usuario se
defina sus propias excepciones. Por supuesto, las excepciones también son
funciones.

• Fuertemente tipado:

En Internet existe cierta controversia sobre el significado que tiene esta palabra al
referirse a los lenguajes de programación, por lo que podremos leer tanto que
Python no es tipado en absoluto, como que es fuertemente tipado. Según nuestra
propia opinión y la opinión más generalizada, Python es fuertemente tipado en el
sentido de que no permite ningún tipo de conversión automática (a diferencia de
otros lenguajes como C). Ejemplo:

a = 3
b = “a”
c = a + b

• Asignación por referencia:

#error, necesita conversión explícita

Como su propio nombre indica, cuando creamos una variable compleja (dícese de
listas, diccionarios o tuplas) y asignamos su valor a otra variable, si modificamos
una de ellas la otra sufrirá el mismo cambio; ya que ambas apuntan a la misma
dirección de memoria. Ejemplo:

a = [1, 2, 3]
b = a
a.append(4)
print (b)

• Necesidad de indentación:

#mostrará por pantalla [1,2,3,4]

En Python no existe ningún delimitador de las estructuras de control. Es decir, no
existe ningún símbolo (como pueden ser las llaves de otros lenguajes) que indique
que una función, un bucle o una clase ha terminado. Por ello, la indentación en
Pythton es obligatoria, ya que es la única manera de que el intérprete sepa hasta
dónde llega cada estructura.

El resultado de esta obligación es que, aunque al principio pueda resultar
incómodo, termina convirtiéndose en un hábito, dando lugar a un código mucho
más cómodo de leer. Ejemplo:

-4-

Concurrencia en Python
______________________________________________________________________________________

Programación Concurrente y Distribuida

for i in range(20):
if i%3 == 0:
print i
if i%5 == 0:
print "Bingo!"
print "---"

• Shell interactivo:

El shell interactivo nos permite realizar pruebas sobre funciones particulares
rápidamente, sin necesidad de ejecutar un programa completo (como ocurre con
PHP), ni mucho menos compilarlo (como ocurre con C). Simplemente, abrimos el
shell y escribimos órdenes en Python como si estuviéramos introduciendo
comandos. Ejemplo:

>>> print "Hello, world"

Hello, world

>>> x = 12**2

>>> x/2

72

>>> # this is a comment

1.2. Tipos de datos

1.2.1.Tipos básicos:

• Numerales:

En el caso de los tipos básicos numerales, éstos no se diferencian mucho de los de
cualquier otro lenguaje, aunque proporcionan muchas funciones para hacer
operaciones matemáticas rápidamente. De hecho, esta característica junto con el
de la consola interactiva, han provocado que algunas personas usen Python como
calculadora. Algunos ejemplos:

12, 3.14, 0xFF, 0377, (-1+2)*3/4**5, abs(x), 0<x<=5

• Strings:

Además del tipo básico de string, proporciona numerosas funciones para el
manejo de las mismas. Lo que convierte a Python en una excelente elección a la
hora de desarrollar parseadores. Ejemplos:

“hola"+“mundo"
“hola"[1:4]

# concatenación
# slicing

-> “holamundo"
-> “ola"

len(“hola")

# longitud

-> 4

-5-

Concurrencia en Python
______________________________________________________________________________________

Programación Concurrente y Distribuida

1.2.2. Tipos complejos:

• Listas:

Las listas son colecciones de datos heterogéneos, de forma que son almacenados
secuencialmente. A continuación se muestra un ejemplo de lista en la que se
introducen tipos de datos distintos (sin necesidad de funciones de conversión) y se
muestran algunas de las funciones que pueden usarse sobre ellas.

a = [99, "bottles of beer", ["on", "the", "wall"]]
>>> a = range(5)
>>> a.append(5)
>>> a.pop()

# [0,1,2,3,4,5]

# [0,1,2,3,4]

# [0,1,2,3,4], y devuelve '5'

• Tuplas:

Similares a las listas, con la única diferencia que los valores de los elementos que
contienen no pueden ser modificados una vez asignados. Ejemplo:

>>> tupla = ('hola', 'bienvenido', 'a', 'python')
>>> tupla[1] = 'intentamos cambiar'

TypeError: object doesn't support item assignment

• Diccionarios:

Este tipo de datos es equivalente a las funciones hash de Java. Es decir, un
diccionario está formado por elementos, que a su vez están formados por dos
valores: el elemento propiamente dicho y una clave que lo identifica
unívocamente. De esta manera, podemos acceder a cualquiera de los elementos
directamente a través de su clave. Elemplo:

>>> dic = {1:'hola', 2:'bienvenido', 'clave':'a', -2:

'python'}

>>> dic.keys()
[1, 2, 'clave', -2]

-6-

Concurrencia en Python
______________________________________________________________________________________

Programación Concurrente y Distribuida

2. Concurrencia en Python.

Python es un lenguaje con soporte multihilo, lo que nos permite la ejecución de varios
procesos simultáneamente. Esta funcionalidad, básica en cualquier sistema operativo
actual, nos proporciona la posibilidad de crear programas con una mayor capacidad de
respuesta.

En el c
  • Links de descarga
http://lwp-l.com/pdf8442

Comentarios de: Programación concurrente en Python 2.4 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad