SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
PPaarraalllleellPPyytthhoonn
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -2-
SISTEMAS OPERATIVOS AVANZADOS
Tema: ParallelPython
Alumnos:
• Muccela, José Daniel
Legajo: 20196
Profesor:
• Ing. Ricardo Adra
Facultad Regional Tucumán
Universidad Tecnológica Nacional
ParallelPython
ParallelKnoppix
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -3-
Introducción a Python
¿Qué es Python?
Python es un lenguaje de programación creado por Guido van Rossum a
principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos
ingleses “Monty Python”.
Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un
código legible.
Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente
tipado, multiplataforma y orientado a objetos.
Tipado dinámico
La característica de tipado dinámico se refiere a que no es necesario declarar
el tipo de dato que va a contener una determinada variable, sino que su tipo se
determinará en tiempo de ejecución según el tipo del valor al que se asigne, y el tipo
de esta variable puede cambiar si se le asigna un valor de otro tipo.
Fuertemente tipado
No se permite tratar a una variable como si fuera de un tipo distinto al que
tiene, es necesario convertir de forma explícita dicha variable al nuevo tipo
previamente. Por ejemplo, si tenemos una variable que contiene un texto (variable
de tipo cadena o string) no podremos tratarla como un número (sumar la cadena “9”
y el número 8). En otros lenguajes el tipo de la variable cambiaría para adaptarse al
comportamiento esperado, aunque esto es más propenso a errores.
Multiplataforma
El intérprete de Python está disponible en multitud de plataformas (UNIX,
Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que si no utilizamos
librerías específicas de cada plataforma nuestro programa podrá correr en todos
estos sistemas sin grandes cambios.
Orientado a objetos
La orientación a objetos es un paradigma de programación en el que los
conceptos del mundo real relevantes para nuestro problema se trasladan a clases y
objetos en nuestro programa.
La ejecución del Programa consiste en una serie de interacciones entre los
objetos.
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -4-
Python también permite la programación imperativa, programación funcional y
Programación orientada a aspectos.
¿Por Qué Python?
Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple,
clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de
librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar
una aplicación en Python sea sencillo, muy rápido y, lo que es más importante,
divertido.
La sintaxis de Python es tan sencilla y cercana al lenguaje natural que los
programas elaborados en Python parecen pseudocódigo. Por este motivo se trata
además de uno de los mejores lenguajes para comenzar a programar.
Python no es adecuado sin embargo para la programación de bajo nivel o para
aplicaciones en las que el rendimiento sea crítico.
Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA,
Industrias Light & Magic, y todas las distribuciones Linux, en las que Python cada
vez representa un tanto por ciento mayor de los programas disponibles.
Instalación de Python
Python viene preinstalado por defecto en la mayoría las distribuciones de
Linux y en las últimas versiones de Mac OS, y está disponible como un
paquete en todos los otros. Sin embargo hay ciertos rasgos que quisiéramos
usar los cuales no están disponibles en el paquete de su distribución. Usted
puede compilar la última versión de Python fácilmente desde su sitio Web.
http://www.python.org/
En caso de que Python no este preinstalado y tampoco esté en los
repositorios, usted puede conseguir los paquetes fácilmente para su propia
distribución.
Para comprobar si está instalado tiene que abrir una terminal y escribir
python. Si está instalado se iniciará la consola interactiva de Python y
obtendremos algo parecido a lo siguiente:
Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>>
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -5-
La primera línea nos indica la versión de Python que tenemos instalada.
Al final podemos ver el prompt (>>>) que nos indica que el intérprete está
esperando código del usuario. Podemos salir escribiendo exit(), o pulsando
Control + D.
Si no te muestra algo parecido no te preocupes, instalar Python es muy
sencillo. Puedes descargar la versión correspondiente a tu sistema operativo
desde la web de Python, en http://www.python.org/download/.
Existen instaladores para Windows y Mac OS. Si utilizas Linux es muy
probable que puedas instalarlo usando la herramienta de gestión de paquetes
de tu distribución, aunque también podemos descargar la aplicación
compilada desde la web de Python.
Nota: Los ejemplos mostrados en este trabajo se realizaron utilizando la distribución Ubuntu de Linux.
Dicha distribución se ejecutó usando una máquina virtual (en nuestro caso: VMware Workstation).
Forma de Programar con Python
Existen dos formas de ejecutar código Python:
Podemos escribir líneas de código en el intérprete y obtener una respuesta
del intérprete para cada línea (sesión interactiva). Al escribir una línea de
código y presionar Enter, el interprete de Python toma la línea y la evalúa.
Escribimos nuestro
código y luego
presionamos enterResultado de ejecutar
el código
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -6-
Podemos escribir el código de un programa en un archivo de texto y
ejecutarlo desde el Terminal de Linux.
Pros y Contras de Python
Ventajas
Desarrollo más rápido: Puedes escribir un programa, salvarlo y ejecutarlo. En
un lenguaje compilado tienes que pasar por los pasos de compilar y ligar el
software, lo cual puede ser un proceso lento.
Multiplataforma: El mismo código funciona en cualquier arquitectura, la única
condición es que disponga del intérprete del lenguaje. No es necesario
compilar el código una vez para cada arquitectura.
Inconvenientes
Lentitud: Los programas interpretados son más lentos que los compilados. Sin
embargo los programas interpretados suelen ser cortos, en los que la
diferencia es inapreciable.
Llamamos al interprete
Python y especificamos el
programa a ejecutar y
luego presionamos enter
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -7-
Indentaciones
Python usa el retorno de carro para separar sentencias y los dos puntos y el
sangrado para separar bloques de código. C++ y Java usan el punto y coma ( ; )
para separar sentencias y las llaves ( { } ) para separar bloques de código. Python
usa la indentación para iniciar y finalizar sentencias.
Python y otros lenguajes
Python puede trabajar en conjunto con una variedad de lenguajes y motores de base
de datos, entre los que se pueden mencionar:
Lamp (conjunto de aplicaciones compuesto por Linux+MySQL+Apache+Php ó
Perl ó Python ó Ruby)
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -8-
Python + PHP
Python + PostgreSQL
Python + MySQL
Punto “py” (.py)
Hay un convenio por el que los ficheros que contienen programas Python
tienen extensión py en su nombre. La extensión de un nombre de fichero son
los caracteres del mismo que suceden al (último) punto. Un fichero llamado
ejemplo.py tiene extensión py.
La idea de las extensiones viene de antiguo y es un mero convenio. Puedes
prescindir de el, pero no es conveniente. En entornos gráficos (como KDE,
Gnome o Microsoft Windows) la extensión se utiliza para determinar qué
icono va asociado al fichero y qué aplicación debe arrancarse para abrir el
fichero al hacer clic (o doble clic) en el mismo.
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -9-
Implementaciones de Python
Python posee diversas implementaciones:
CPython es la implementación original, disponible para varias plataformas en
el sitio oficial de Python.
IronPython es una implementación del intérprete Python (cPython) escrita
totalmente en C#. El proyecto trata de seguir al pie de la letra el lenguaje
Python, como implementación de Python que es. Esto hace que cualquier
programa escrito en Python pueda ser interpretado con IronPython, con las
ventajas añadidas de poder usar las bibliotecas de la plataforma .NET y poder
compilar el código a bytecode
Stackless Python es la variante de CPython que trata de no usar el stack de C
(www.stackless.com)
Jython (Python en Java) es un lenguaje de programación de alto nivel,
dinámico y orientado a objetos basado en Python e implementado en Java
(100%), su antecesor fue JPython, Jython al igual que Python es un proyecto
de código libre. El lenguaje de programación Jython funciona prácticamente
igual que el lenguaje Python, en su versión 2.2.
Pippy es la implementación realizada para Palm (pippy.sourceforge.net)
PyPy es Python totalmente escrito en Python (codespeak.net/pypy) El
proyecto PyPy pretende producir una versión optimizada y más rápida de
Python.
De acuerdo a lo que se ha señalado en algunas listas de correo, una
consecuencia de este proyecto es que se minimizarán las diferencias entre
diferentes implementaciones como python, jython e ironpython, por ejemplo, y que
será más sencillo usar python en sistemas empotrados como móviles y PDAs.
Sistema de objetos
En Python, todo es un objeto (incluso las clases). Las clases, al ser objetos,
son instancias de una metaclase.
Python además soporta herencia múltiple y polimorfismo y demás
características de la orientación a objetos.
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -10-
Python y sus librerías
El intérprete de Python y su extensa biblioteca estándar están disponibles
libremente, en forma de fuentes o ejecutables, para las plataformas más
importantes, en la sede web de Python, http://www.python.org, y se pueden
distribuir libremente. La misma sede contiene también distribuciones y
direcciones de muchos módulos, programas y herramientas Python de
terceras partes, además de documentación adicional.
Python permite dividir un programa en módulos reutilizables desde otros
programas en Python. Viene con una gran colección de módulos estándar
que puedes utilizar como base de nuestros programas (o como ejemplos para
empezar a aprender Python). También hay módulos incluidos que
proporcionan E/S de ficheros, llamadas al sistema, ‘sockets’ y hasta interfaces
gráficas con el usuario, como Tk.
Python y sus módulos
numerical python msilib
pygtk pkgutil
pyqt pybench
tkinter socket
wxpython spwd
email tarfile
doctest zipfile
mailbox zlib
codecs collections
cProfile ………
Ejemplo:
Usando el editor y ejecutando desde Terminal:
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -11-
Parallel Python
¿Qué es Parallel Python?
Parallel Python es un módulo de Python que proporciona el mecanismo para
la ejecución en paralelo de código Python en SMP (sistemas con múltiples
procesadores) y Clusters (ordenadores conectados vía red), es ligero, fácil para la
instalación y tiene la posibilidad de integrarse con otro software creado en Python.
Hoy en día el software escrito en Python encuentra una amplia gama de
categorías incluyendo los negocios, el análisis de datos y cálculos científicos. Esto
junto con la amplia disponibilidad de ordenadores SMP y de Clusters en el mercado
crea la demanda para la ejecución paralela de código Python.
Características
1. Ejecución paralela de Python en SMP (Sistema de MultiProcesamiento) y
Clusters.
2. Fácil de entender y poner en práctica la técnica.
3. Detección automática de la configuración óptima.
4. Asignación de procesos dinámicos (el número de procesos trabajando puede
ser cambiado en el tiempo de ejecución).
5. Equilibrio de carga dinámico.
6. Autentificación basada en SHA (Secure Hash Algorithm, Algoritmo de Hash
Seguro; es un conjunto de funciones hash diseñado por la Agencia de
Seguridad Nacional de los Estados Unidos) para conexiones de red.
7. Fácil portabilidad para Windows, Linux, Unix.
8. Open source (código abierto).
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -12-
¿Qué es un clúster?
Clúster es un grupo de múltiples ordenadores unidos mediante una red de alta
velocidad, de tal forma que el conjunto es visto como un único ordenador, más
potente que los comunes de escritorio. De un cluster se espera que presente
combinaciones de los siguientes servicios:
• Alto rendimiento (High Performance)
• Alta disponibilidad (High Availability)
• Equilibrio de carga (Load Balancing)
• Escalabilidad (Scalability)
La construcción de los ordenadores del cluster es más fácil y económica
debido a su flexibilidad: pueden tener todos la misma configuración de hardware y
sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas
y sistemas operativos similares (clúster semi-homogéneo), o tener diferente
hardware y sistema operativo (clúster heterogéneo).
Para que un clúster funcione como tal, no basta solo con conectar entre sí los
ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el
cual se encargue de interactuar con el usuario y los procesos que corren en él para
optimizar el funcionamiento.
Los nodos que conforman un cluster pueden ser simples ordenadores,
sistemas multi-procesador o estaciones de trabajo (Workstations). Cabe aclarar que
a la hora de diseñar un Cluster, los nodos deben tener características similares, es
decir, deben guardar cierta similitud de arquitectura y sistemas operativos, ya que si
se conforma un Cluster con Nodos totalmente heterogéneos (existe una diferencia
grande entre capacidad de procesadores, memoria, HD) será ineficiente debido a
que el middleware (El middleware es un software de conectividad que ofrece un
conjunto de servicios que hacen posible el funcionamiento de aplicaciones
distribuidas sobre plataformas heterogéneas.) delegara o asignara todos los
procesos al Nodo de mayor capacidad de Cómputo y solo distribuirá cuando este se
encuentre saturado de procesos; por eso es recomendable construir un grupo de
ordenadores los más similares posible.
Parallel Knoppix
Logo de
Parallel
Kanoppix
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -13-
¿Qué es Parallel Knoppix?
Es una distribución Linux LiveCD basada en Knoppix, basada a su vez en
Debian, que viene preparada para armar un clúster de forma rápida y sin tantos
detalles de configuración.
ParallelKnoppix es una manera rápida y fácil de crear un cluster de
computación de alto rendimiento. Está diseñado para ser fácil de usar, siendo
también adecuado para trabajos profesionales. De hecho, se puede lograr un trabajo
más serio realizado con ParallelKnoppix usando todas sus alternativas, simplemente
porque se gana más tiempo libre en el uso del cluster, en lugar de tener que
instalarlo y administrarlo.
ParallelKnoppix solía basarse en la distribución Knoppix, por lo que
ParallelKnoppix nunca habría sido posible sin Knoppix como punto de partida.
ParallelKnoppix + Python
ParallelKnoppix facilita la programación en Python ya que tiene incorporadas
la mayoría de las librerías necesarias para ejecutar los programas escritos en este
lenguaje.
En este trabajo se muestran ejemplos de cómo ejecutar un programa escrito
en Python de manera muy sencilla. La idea que se persigue es facilitar al
desarrollador las tareas relacionadas a las configuraciones del sistema operativo y
sus aplicaciones para volcar todo el esfuerzo en la creación de las líneas de código.
Para poder ejecutar nuestros programas de python en ParallelKnoppix es
necesaria una configuración previa. Esta configuración está orientada a preparar el
cluster o SMP para visualizar las virtudes de la programación en paralelo. Esto es,
configurar la cantidad de host disponibles para trabajar con el programa que
deseamos ejecutar. Supongamos un sencillo programa; una Suma de números
primos. Al ejecutar el mismo usando un cluster, los resultados se obtienen en una
menor tiempo que ejecutando el programa en un solo host.
Ejemplos
Para ejecutar código Python en paralelo dentro de nuestro cluster, lo primero
es tener instalado Python y Parallel Python en el host principal y en todos los nodos
computacionales de nuestro cluster.
Hecho esto, y con nuestro cluster LAM/MPI "lambooted" ejecutaremos
ppserver.py en todos los nodos computacionales. Esto se puede hacer de forma
sencilla desde el frontend.
LAM (Local Area Multicomputer) es un ambiente de programación de MPI
(interfaz de paso de mensajes) y un sistema de desarrollo para las computadoras
heterogéneas en una red. Con LAM/MPI, un dedicado conjunto de computadoras o
una infraestructura de cómputo en red , puede actuar como un simple recurso de
cómputo en paralelo.
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -14-
El entorno LAM/MPI debe ser levantado o buteado antes de que cualquier
cliente o aplicación MPI puede correr. LAM usa un demonio sobre cada nodo para
control de procesos, control de meta entorno, y en algunos casos, paso de
mensajes. "Butear LAM" se refiere al acto de lanzar ese demonio sobre cada nodo.
El comando lamboot es el usado para este fin.
En los ejemplos que se muestran a continuación se explican los pasos que se
siguieron para conseguir los resultados. Desde la apertura del sistema operativo
dentro de la máquina virtual hasta la ejecución del programa en python.
Ejecutando ParallelKnoppix
Primeramente vamos a ejecutar ParallelKanoppix dentro de la máquina
virtual. La imagen siguiente muestra la acción.
Una vez cargado el sistema vamos al menú de opciones, generalmente
ubicado de manera oculta en el sector inferior de la pantalla.
A continuación se abrirá el explorador Konqueror mostrando el directorio
“Home”.
Clic aquí
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -15-
Aquí hacemos clic en la carpeta “Examples”. Se visualizarán las carpetas que
contiene.
A continuación hacemos clic en la carpeta “Python”.
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -16-
Luego hacemos clic en la carpeta “parallelpython”.
Lo que se puede ver son archivos de ejemplo para python, especialmente
creados para parallelpython.
Ahora vamos a abrir una Terminal (Konsole) en este mismo directorio como
se puede ver en la siguiente imagen.
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -17-
Como se puede ver, el prompt (knoppix@1[parallelpython]$) está listo para
que ejecutemos alguna acción relacionada con este directorio
(/home/knoppix/Examples/Python/parallelpython/). Entonces escribimos el nombre
del ejemplo antecediendo la palabra (comando) python.
• Ejemplo 1: Suma de números primos
Empezaremos con la suma de números primos hasta 100700
(sum_primes.py), lo ejecutaremos usando solo el host principal (un Pentium 3). Para
procesar lo solicitado por el programa el host necesitará casi 59 segundos para
ejecutar todo el proceso. Veamos el resultado de la ejecución del programa.
Usage: python sum_primes.py [ncpus]
[ncpus] - the number of workers to run in parallel,
if omitted it will be set to the number of processors in the system
Starting pp with 1 workers
Sum of primes below 100 is 1060
Sum of primes below 100000 is 454396537
Sum of primes below 100100 is 454996777
Sum of primes below 100200 is 455898156
Sum of primes below 100300 is 456700218
Sum of primes below 100400 is 457603451
Sum of primes below 100500 is 458407033
Sum of primes below 100600 is 459412387
Sum of primes below 100700 is 460217613
Time elapsed: 58.4337880611 s
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
9 | 100.00 | 51.1004 | 5.677823 | local
Time elapsed since server creation 58.4621379375
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -18-
Ahora supongamos que tenemos un cluster compuesto del host principal más
cuatro nodos computacionales (estos nodos son Pentium 2); ahora le costará algo
menos de 19 segundos ejecutar el proceso, como se muestra a continuación:
Usage: python sum_primes.py [ncpus]
[ncpus] - the number of workers to run in parallel,
if omitted it will be set to the number of processors in the system
Starting pp with 1 workers
Sum of primes below 100 is 1060
Sum of primes below 100000 is 454396537
Sum of primes below 100100 is 454996777
Sum of primes below 100200 is 455898156
Sum of primes below 100300 is 456700218
Sum of primes below 100400 is 457603451
Sum of primes below 100500 is 458407033
Sum of primes below 100600 is 459412387
Sum of primes below 100700 is 460217613
Time elapsed: 18.7660019398 s
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
2 | 22.22 | 18.3807 | 9.190361 | 10.11.12.2:60000
2 | 22.22 | 18.5409 | 9.270460 | 10.11.12.4:60000
1 | 11.11 | 9.1975 | 9.197520 | 10.11.12.5:60000
3 | 33.33 | 14.6504 | 4.883458 | local
1 | 11.11 | 9.2648 | 9.264778 | 10.11.12.3:60000
Time elapsed since server creation 18.7660019398
• Ejemplo 2: Callbacks
Este programa demuestra el cómputo paralelo usando callbacks.
El programa calculará la suma parcial 1-1/2+1/3-1/4+1/5-1/6+... (En el límite
es ln(2)). Esto le costará al host principal unos 283 segundos:
Usage: python callback.py [ncpus]
[ncpus] - the number of workers to run in parallel,
if omitted it will be set to the number of processors in the system
Starting pp with 1 workers
Partial sum is 0.69314720556 | diff = -2.50000439239e-08
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
128 | 100.00 | 283.1016 | 2.211731 | local
Time elapsed since server creation 283.22504282
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -19-
Utilizando todos los nodos del cluster, la operación tardará uno 15 segundos
en hacer el cálculo.
Usage: python callback.py [ncpus]
[ncpus] - the number of workers to run in parallel,
if omitted it will be set to the number of processors in the system
Starting pp with 1 workers
Partial sum is 0.69314720556 | diff = -2.50000439239e-08
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
26 | 20.31 | 14.5316 | 0.558909 | 10.11.12.2:60000
27 | 21.09 | 15.0113 | 0.555973 | 10.11.12.4:60000
26 | 20.31 | 14.5897 | 0.561143 | 10.11.12.5:60000
23 | 17.97 | 14.2961 | 0.621569 | local
26 | 20.31 | 14.5336 | 0.558986 | 10.11.12.3:60000
Time elapsed since server creation 15.4670109749
Nota: En el CD adjunto se encuentran los archivos de ejemplo en formato de texto (*.txt) y los
archivos en formato python (*.py).
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -20-
Referencias
Paginas Web visitadas
• Sitio oficial de Python. Información.
http://www.python.org/
Este sitio contiene toda la información disponible sobre el lenguaje, incluidos
los manuales oficiales y por supuesto las versiones disponibles del programa según
la plataforma donde se desee utilizar, listos para descargar.
• Sitio con información sobre LAMP.
http://www.noticiasdot.com/publicaciones/2004/0504/1105/noticias110504/noti
cias110504-6.htm
• Sitio para Principiantes
http://www.blueportal.org/modules.php?name=News&file=article&sid=5843
Se trata de un link a un libro empieza por lo más básico de la programación
en sí y después pasa a explicar la sintaxis de Python con montones de ejemplos. Es
el libro idóneo para aquel que no sabe programar ningún lenguaje y quiere empezar
con Python. El programador experto necesitará ojearlo por encima e ir mirando los
ejemplos para ir viendo como se estructura y cuál es la sintaxis de Python.
• Sitio desde donde se descargó la distribución ParallelKanoppix-2.9.
http://pareto.uab.es/mcreel/PelicanHPC/download/
• Sitio con Información acerca de ParallelKnoppix
http://www.icewalkers.com/Linux/Software/527410/ParallelKnoppix.html
• Sitio oficial de ParallelPython. Información y ejemplos.
http://www.parallelpython.com/
Documentación Consultada
• Python - Reference manual (2004). En inglés. Por Guido van Rossum
Fred L. Drake, Jr.
Descargado del sitio oficial de Python.
http://www.python.org/
• Manual Python. En español.
Descargado del sitio oficial de Python.
http://www.python.org/
• Python para todos. Por Raúl González Duque
http://mundogeek.net/tutorial-python/
• ParallelKnoppix Tutorial
http://pareto.uab.es/mcreel/ParallelKnoppix/Tutorial/
SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel
FRT - UTN -21-
INDICE
Página Contenido
3 Introducción a Python - ¿Qué es Python?
3 Tipado dinámico
3 Fuertemente tipado
3 Multiplataforma
3 Orientado a objetos
4 ¿Por Qué Python?
4 Instalación de Python
5 Forma de Programar con Python
6 Pros y Contras de Python
7 Indentaciones
7 Python y otros lenguajes
8 Punto “py” (.py)
9 Implementaciones de Python
9 Sistema de objetos
10 Python y sus librerías
10 Python y sus módulos
10 Ejemplo de programa en Python
11 Parallel Python - ¿Qué es Parallel Python?
11 Características de ParallelPython
12 ¿Qué es un clúster?
12 Parallel Knoppix
13 ¿Qué es Parallel Knoppix?
13 ParallelKnoppix + Python
13 Ejemplos - pasos previos
14 Ejecutando ParallelKnoppix
17 Ejemplo 1: Suma de números primos
18 Ejemplo 2: Callbacks
20 Referencias
21 Indice

Más contenido relacionado

La actualidad más candente (10)

Semana 2 Fundamentos de Python(Variables)
Semana 2   Fundamentos de Python(Variables)Semana 2   Fundamentos de Python(Variables)
Semana 2 Fundamentos de Python(Variables)
 
Python
PythonPython
Python
 
1 curso-de-python-introducci-n-a-python
1 curso-de-python-introducci-n-a-python1 curso-de-python-introducci-n-a-python
1 curso-de-python-introducci-n-a-python
 
Tutorial de Python - Pyar
Tutorial de Python - PyarTutorial de Python - Pyar
Tutorial de Python - Pyar
 
Introducción a Phyton
Introducción a PhytonIntroducción a Phyton
Introducción a Phyton
 
Presentacion idioma phyton (1)
Presentacion idioma phyton (1)Presentacion idioma phyton (1)
Presentacion idioma phyton (1)
 
Lenguaje phython
Lenguaje phythonLenguaje phython
Lenguaje phython
 
Introducción a Python
Introducción a Python Introducción a Python
Introducción a Python
 
Python i
Python iPython i
Python i
 
Programador Jr. para Python Primera Parte
Programador Jr. para Python Primera ParteProgramador Jr. para Python Primera Parte
Programador Jr. para Python Primera Parte
 

Similar a Parallel python sistemas operativos avanzados

Similar a Parallel python sistemas operativos avanzados (20)

python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdf
 
Python para todos
Python para todosPython para todos
Python para todos
 
Python para Todos
Python para TodosPython para Todos
Python para Todos
 
python-para-todos.pdf
python-para-todos.pdfpython-para-todos.pdf
python-para-todos.pdf
 
Libro python para todos
Libro   python para todosLibro   python para todos
Libro python para todos
 
Python para todos
Python para todosPython para todos
Python para todos
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdf
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdf
 
Introduccion a-python
Introduccion a-pythonIntroduccion a-python
Introduccion a-python
 
programa curso python 2022.pdf
programa curso python 2022.pdfprograma curso python 2022.pdf
programa curso python 2022.pdf
 
Tipo de Aplicaciones
Tipo de AplicacionesTipo de Aplicaciones
Tipo de Aplicaciones
 
Aprendamos python
Aprendamos pythonAprendamos python
Aprendamos python
 
Python power 1
Python power 1Python power 1
Python power 1
 
Python basic slides for beginners to learn python
Python basic slides for beginners to learn pythonPython basic slides for beginners to learn python
Python basic slides for beginners to learn python
 
El tutorial PYTHON EMERSON EDUARDO RODRIGUES
El tutorial PYTHON  EMERSON EDUARDO RODRIGUESEl tutorial PYTHON  EMERSON EDUARDO RODRIGUES
El tutorial PYTHON EMERSON EDUARDO RODRIGUES
 
Lenguaje de programación Python
Lenguaje de programación PythonLenguaje de programación Python
Lenguaje de programación Python
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python2
Tutorial python2Tutorial python2
Tutorial python2
 
Tutorial python
Tutorial pythonTutorial python
Tutorial python
 

Más de Daniel Muccela

Tesis ingenieria en sistemas, software libre y pymes
Tesis ingenieria en sistemas, software libre y pymesTesis ingenieria en sistemas, software libre y pymes
Tesis ingenieria en sistemas, software libre y pymesDaniel Muccela
 
Sistema de vigilancia automatizado
Sistema de vigilancia automatizadoSistema de vigilancia automatizado
Sistema de vigilancia automatizadoDaniel Muccela
 
Scrum en sistema grh tuc
Scrum en sistema grh tucScrum en sistema grh tuc
Scrum en sistema grh tucDaniel Muccela
 
Inteligencia artificial inversiones
Inteligencia artificial inversionesInteligencia artificial inversiones
Inteligencia artificial inversionesDaniel Muccela
 
Monografia encriptacion
Monografia encriptacionMonografia encriptacion
Monografia encriptacionDaniel Muccela
 
Proyecto de fabricación de envases de madera
Proyecto de fabricación de envases de maderaProyecto de fabricación de envases de madera
Proyecto de fabricación de envases de maderaDaniel Muccela
 

Más de Daniel Muccela (14)

Etica sistemica
Etica sistemicaEtica sistemica
Etica sistemica
 
Cookies
CookiesCookies
Cookies
 
Tesis ingenieria en sistemas, software libre y pymes
Tesis ingenieria en sistemas, software libre y pymesTesis ingenieria en sistemas, software libre y pymes
Tesis ingenieria en sistemas, software libre y pymes
 
Sistema backup online
Sistema backup onlineSistema backup online
Sistema backup online
 
Sistema de vigilancia automatizado
Sistema de vigilancia automatizadoSistema de vigilancia automatizado
Sistema de vigilancia automatizado
 
Scrum en sistema grh tuc
Scrum en sistema grh tucScrum en sistema grh tuc
Scrum en sistema grh tuc
 
Turing searle
Turing searleTuring searle
Turing searle
 
Sistemas expertos
Sistemas expertosSistemas expertos
Sistemas expertos
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 
Logica fuzzy
Logica fuzzyLogica fuzzy
Logica fuzzy
 
Inteligencia artificial inversiones
Inteligencia artificial inversionesInteligencia artificial inversiones
Inteligencia artificial inversiones
 
Algoritmos genéticos
Algoritmos genéticosAlgoritmos genéticos
Algoritmos genéticos
 
Monografia encriptacion
Monografia encriptacionMonografia encriptacion
Monografia encriptacion
 
Proyecto de fabricación de envases de madera
Proyecto de fabricación de envases de maderaProyecto de fabricación de envases de madera
Proyecto de fabricación de envases de madera
 

Último

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 

Último (20)

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 

Parallel python sistemas operativos avanzados

  • 2. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -2- SISTEMAS OPERATIVOS AVANZADOS Tema: ParallelPython Alumnos: • Muccela, José Daniel Legajo: 20196 Profesor: • Ing. Ricardo Adra Facultad Regional Tucumán Universidad Tecnológica Nacional ParallelPython ParallelKnoppix
  • 3. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -3- Introducción a Python ¿Qué es Python? Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible. Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos. Tipado dinámico La característica de tipado dinámico se refiere a que no es necesario declarar el tipo de dato que va a contener una determinada variable, sino que su tipo se determinará en tiempo de ejecución según el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si se le asigna un valor de otro tipo. Fuertemente tipado No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario convertir de forma explícita dicha variable al nuevo tipo previamente. Por ejemplo, si tenemos una variable que contiene un texto (variable de tipo cadena o string) no podremos tratarla como un número (sumar la cadena “9” y el número 8). En otros lenguajes el tipo de la variable cambiaría para adaptarse al comportamiento esperado, aunque esto es más propenso a errores. Multiplataforma El intérprete de Python está disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que si no utilizamos librerías específicas de cada plataforma nuestro programa podrá correr en todos estos sistemas sin grandes cambios. Orientado a objetos La orientación a objetos es un paradigma de programación en el que los conceptos del mundo real relevantes para nuestro problema se trasladan a clases y objetos en nuestro programa. La ejecución del Programa consiste en una serie de interacciones entre los objetos.
  • 4. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -4- Python también permite la programación imperativa, programación funcional y Programación orientada a aspectos. ¿Por Qué Python? Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido. La sintaxis de Python es tan sencilla y cercana al lenguaje natural que los programas elaborados en Python parecen pseudocódigo. Por este motivo se trata además de uno de los mejores lenguajes para comenzar a programar. Python no es adecuado sin embargo para la programación de bajo nivel o para aplicaciones en las que el rendimiento sea crítico. Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA, Industrias Light & Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por ciento mayor de los programas disponibles. Instalación de Python Python viene preinstalado por defecto en la mayoría las distribuciones de Linux y en las últimas versiones de Mac OS, y está disponible como un paquete en todos los otros. Sin embargo hay ciertos rasgos que quisiéramos usar los cuales no están disponibles en el paquete de su distribución. Usted puede compilar la última versión de Python fácilmente desde su sitio Web. http://www.python.org/ En caso de que Python no este preinstalado y tampoco esté en los repositorios, usted puede conseguir los paquetes fácilmente para su propia distribución. Para comprobar si está instalado tiene que abrir una terminal y escribir python. Si está instalado se iniciará la consola interactiva de Python y obtendremos algo parecido a lo siguiente: Python 2.5.1 (r251:54863, May 2 2007, 16:56:35) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>>
  • 5. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -5- La primera línea nos indica la versión de Python que tenemos instalada. Al final podemos ver el prompt (>>>) que nos indica que el intérprete está esperando código del usuario. Podemos salir escribiendo exit(), o pulsando Control + D. Si no te muestra algo parecido no te preocupes, instalar Python es muy sencillo. Puedes descargar la versión correspondiente a tu sistema operativo desde la web de Python, en http://www.python.org/download/. Existen instaladores para Windows y Mac OS. Si utilizas Linux es muy probable que puedas instalarlo usando la herramienta de gestión de paquetes de tu distribución, aunque también podemos descargar la aplicación compilada desde la web de Python. Nota: Los ejemplos mostrados en este trabajo se realizaron utilizando la distribución Ubuntu de Linux. Dicha distribución se ejecutó usando una máquina virtual (en nuestro caso: VMware Workstation). Forma de Programar con Python Existen dos formas de ejecutar código Python: Podemos escribir líneas de código en el intérprete y obtener una respuesta del intérprete para cada línea (sesión interactiva). Al escribir una línea de código y presionar Enter, el interprete de Python toma la línea y la evalúa. Escribimos nuestro código y luego presionamos enterResultado de ejecutar el código
  • 6. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -6- Podemos escribir el código de un programa en un archivo de texto y ejecutarlo desde el Terminal de Linux. Pros y Contras de Python Ventajas Desarrollo más rápido: Puedes escribir un programa, salvarlo y ejecutarlo. En un lenguaje compilado tienes que pasar por los pasos de compilar y ligar el software, lo cual puede ser un proceso lento. Multiplataforma: El mismo código funciona en cualquier arquitectura, la única condición es que disponga del intérprete del lenguaje. No es necesario compilar el código una vez para cada arquitectura. Inconvenientes Lentitud: Los programas interpretados son más lentos que los compilados. Sin embargo los programas interpretados suelen ser cortos, en los que la diferencia es inapreciable. Llamamos al interprete Python y especificamos el programa a ejecutar y luego presionamos enter
  • 7. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -7- Indentaciones Python usa el retorno de carro para separar sentencias y los dos puntos y el sangrado para separar bloques de código. C++ y Java usan el punto y coma ( ; ) para separar sentencias y las llaves ( { } ) para separar bloques de código. Python usa la indentación para iniciar y finalizar sentencias. Python y otros lenguajes Python puede trabajar en conjunto con una variedad de lenguajes y motores de base de datos, entre los que se pueden mencionar: Lamp (conjunto de aplicaciones compuesto por Linux+MySQL+Apache+Php ó Perl ó Python ó Ruby)
  • 8. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -8- Python + PHP Python + PostgreSQL Python + MySQL Punto “py” (.py) Hay un convenio por el que los ficheros que contienen programas Python tienen extensión py en su nombre. La extensión de un nombre de fichero son los caracteres del mismo que suceden al (último) punto. Un fichero llamado ejemplo.py tiene extensión py. La idea de las extensiones viene de antiguo y es un mero convenio. Puedes prescindir de el, pero no es conveniente. En entornos gráficos (como KDE, Gnome o Microsoft Windows) la extensión se utiliza para determinar qué icono va asociado al fichero y qué aplicación debe arrancarse para abrir el fichero al hacer clic (o doble clic) en el mismo.
  • 9. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -9- Implementaciones de Python Python posee diversas implementaciones: CPython es la implementación original, disponible para varias plataformas en el sitio oficial de Python. IronPython es una implementación del intérprete Python (cPython) escrita totalmente en C#. El proyecto trata de seguir al pie de la letra el lenguaje Python, como implementación de Python que es. Esto hace que cualquier programa escrito en Python pueda ser interpretado con IronPython, con las ventajas añadidas de poder usar las bibliotecas de la plataforma .NET y poder compilar el código a bytecode Stackless Python es la variante de CPython que trata de no usar el stack de C (www.stackless.com) Jython (Python en Java) es un lenguaje de programación de alto nivel, dinámico y orientado a objetos basado en Python e implementado en Java (100%), su antecesor fue JPython, Jython al igual que Python es un proyecto de código libre. El lenguaje de programación Jython funciona prácticamente igual que el lenguaje Python, en su versión 2.2. Pippy es la implementación realizada para Palm (pippy.sourceforge.net) PyPy es Python totalmente escrito en Python (codespeak.net/pypy) El proyecto PyPy pretende producir una versión optimizada y más rápida de Python. De acuerdo a lo que se ha señalado en algunas listas de correo, una consecuencia de este proyecto es que se minimizarán las diferencias entre diferentes implementaciones como python, jython e ironpython, por ejemplo, y que será más sencillo usar python en sistemas empotrados como móviles y PDAs. Sistema de objetos En Python, todo es un objeto (incluso las clases). Las clases, al ser objetos, son instancias de una metaclase. Python además soporta herencia múltiple y polimorfismo y demás características de la orientación a objetos.
  • 10. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -10- Python y sus librerías El intérprete de Python y su extensa biblioteca estándar están disponibles libremente, en forma de fuentes o ejecutables, para las plataformas más importantes, en la sede web de Python, http://www.python.org, y se pueden distribuir libremente. La misma sede contiene también distribuciones y direcciones de muchos módulos, programas y herramientas Python de terceras partes, además de documentación adicional. Python permite dividir un programa en módulos reutilizables desde otros programas en Python. Viene con una gran colección de módulos estándar que puedes utilizar como base de nuestros programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, ‘sockets’ y hasta interfaces gráficas con el usuario, como Tk. Python y sus módulos numerical python msilib pygtk pkgutil pyqt pybench tkinter socket wxpython spwd email tarfile doctest zipfile mailbox zlib codecs collections cProfile ……… Ejemplo: Usando el editor y ejecutando desde Terminal:
  • 11. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -11- Parallel Python ¿Qué es Parallel Python? Parallel Python es un módulo de Python que proporciona el mecanismo para la ejecución en paralelo de código Python en SMP (sistemas con múltiples procesadores) y Clusters (ordenadores conectados vía red), es ligero, fácil para la instalación y tiene la posibilidad de integrarse con otro software creado en Python. Hoy en día el software escrito en Python encuentra una amplia gama de categorías incluyendo los negocios, el análisis de datos y cálculos científicos. Esto junto con la amplia disponibilidad de ordenadores SMP y de Clusters en el mercado crea la demanda para la ejecución paralela de código Python. Características 1. Ejecución paralela de Python en SMP (Sistema de MultiProcesamiento) y Clusters. 2. Fácil de entender y poner en práctica la técnica. 3. Detección automática de la configuración óptima. 4. Asignación de procesos dinámicos (el número de procesos trabajando puede ser cambiado en el tiempo de ejecución). 5. Equilibrio de carga dinámico. 6. Autentificación basada en SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro; es un conjunto de funciones hash diseñado por la Agencia de Seguridad Nacional de los Estados Unidos) para conexiones de red. 7. Fácil portabilidad para Windows, Linux, Unix. 8. Open source (código abierto).
  • 12. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -12- ¿Qué es un clúster? Clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. De un cluster se espera que presente combinaciones de los siguientes servicios: • Alto rendimiento (High Performance) • Alta disponibilidad (High Availability) • Equilibrio de carga (Load Balancing) • Escalabilidad (Scalability) La construcción de los ordenadores del cluster es más fácil y económica debido a su flexibilidad: pueden tener todos la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semi-homogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo). Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento. Los nodos que conforman un cluster pueden ser simples ordenadores, sistemas multi-procesador o estaciones de trabajo (Workstations). Cabe aclarar que a la hora de diseñar un Cluster, los nodos deben tener características similares, es decir, deben guardar cierta similitud de arquitectura y sistemas operativos, ya que si se conforma un Cluster con Nodos totalmente heterogéneos (existe una diferencia grande entre capacidad de procesadores, memoria, HD) será ineficiente debido a que el middleware (El middleware es un software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas.) delegara o asignara todos los procesos al Nodo de mayor capacidad de Cómputo y solo distribuirá cuando este se encuentre saturado de procesos; por eso es recomendable construir un grupo de ordenadores los más similares posible. Parallel Knoppix Logo de Parallel Kanoppix
  • 13. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -13- ¿Qué es Parallel Knoppix? Es una distribución Linux LiveCD basada en Knoppix, basada a su vez en Debian, que viene preparada para armar un clúster de forma rápida y sin tantos detalles de configuración. ParallelKnoppix es una manera rápida y fácil de crear un cluster de computación de alto rendimiento. Está diseñado para ser fácil de usar, siendo también adecuado para trabajos profesionales. De hecho, se puede lograr un trabajo más serio realizado con ParallelKnoppix usando todas sus alternativas, simplemente porque se gana más tiempo libre en el uso del cluster, en lugar de tener que instalarlo y administrarlo. ParallelKnoppix solía basarse en la distribución Knoppix, por lo que ParallelKnoppix nunca habría sido posible sin Knoppix como punto de partida. ParallelKnoppix + Python ParallelKnoppix facilita la programación en Python ya que tiene incorporadas la mayoría de las librerías necesarias para ejecutar los programas escritos en este lenguaje. En este trabajo se muestran ejemplos de cómo ejecutar un programa escrito en Python de manera muy sencilla. La idea que se persigue es facilitar al desarrollador las tareas relacionadas a las configuraciones del sistema operativo y sus aplicaciones para volcar todo el esfuerzo en la creación de las líneas de código. Para poder ejecutar nuestros programas de python en ParallelKnoppix es necesaria una configuración previa. Esta configuración está orientada a preparar el cluster o SMP para visualizar las virtudes de la programación en paralelo. Esto es, configurar la cantidad de host disponibles para trabajar con el programa que deseamos ejecutar. Supongamos un sencillo programa; una Suma de números primos. Al ejecutar el mismo usando un cluster, los resultados se obtienen en una menor tiempo que ejecutando el programa en un solo host. Ejemplos Para ejecutar código Python en paralelo dentro de nuestro cluster, lo primero es tener instalado Python y Parallel Python en el host principal y en todos los nodos computacionales de nuestro cluster. Hecho esto, y con nuestro cluster LAM/MPI "lambooted" ejecutaremos ppserver.py en todos los nodos computacionales. Esto se puede hacer de forma sencilla desde el frontend. LAM (Local Area Multicomputer) es un ambiente de programación de MPI (interfaz de paso de mensajes) y un sistema de desarrollo para las computadoras heterogéneas en una red. Con LAM/MPI, un dedicado conjunto de computadoras o una infraestructura de cómputo en red , puede actuar como un simple recurso de cómputo en paralelo.
  • 14. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -14- El entorno LAM/MPI debe ser levantado o buteado antes de que cualquier cliente o aplicación MPI puede correr. LAM usa un demonio sobre cada nodo para control de procesos, control de meta entorno, y en algunos casos, paso de mensajes. "Butear LAM" se refiere al acto de lanzar ese demonio sobre cada nodo. El comando lamboot es el usado para este fin. En los ejemplos que se muestran a continuación se explican los pasos que se siguieron para conseguir los resultados. Desde la apertura del sistema operativo dentro de la máquina virtual hasta la ejecución del programa en python. Ejecutando ParallelKnoppix Primeramente vamos a ejecutar ParallelKanoppix dentro de la máquina virtual. La imagen siguiente muestra la acción. Una vez cargado el sistema vamos al menú de opciones, generalmente ubicado de manera oculta en el sector inferior de la pantalla. A continuación se abrirá el explorador Konqueror mostrando el directorio “Home”. Clic aquí
  • 15. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -15- Aquí hacemos clic en la carpeta “Examples”. Se visualizarán las carpetas que contiene. A continuación hacemos clic en la carpeta “Python”.
  • 16. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -16- Luego hacemos clic en la carpeta “parallelpython”. Lo que se puede ver son archivos de ejemplo para python, especialmente creados para parallelpython. Ahora vamos a abrir una Terminal (Konsole) en este mismo directorio como se puede ver en la siguiente imagen.
  • 17. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -17- Como se puede ver, el prompt (knoppix@1[parallelpython]$) está listo para que ejecutemos alguna acción relacionada con este directorio (/home/knoppix/Examples/Python/parallelpython/). Entonces escribimos el nombre del ejemplo antecediendo la palabra (comando) python. • Ejemplo 1: Suma de números primos Empezaremos con la suma de números primos hasta 100700 (sum_primes.py), lo ejecutaremos usando solo el host principal (un Pentium 3). Para procesar lo solicitado por el programa el host necesitará casi 59 segundos para ejecutar todo el proceso. Veamos el resultado de la ejecución del programa. Usage: python sum_primes.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Sum of primes below 100 is 1060 Sum of primes below 100000 is 454396537 Sum of primes below 100100 is 454996777 Sum of primes below 100200 is 455898156 Sum of primes below 100300 is 456700218 Sum of primes below 100400 is 457603451 Sum of primes below 100500 is 458407033 Sum of primes below 100600 is 459412387 Sum of primes below 100700 is 460217613 Time elapsed: 58.4337880611 s Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 9 | 100.00 | 51.1004 | 5.677823 | local Time elapsed since server creation 58.4621379375
  • 18. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -18- Ahora supongamos que tenemos un cluster compuesto del host principal más cuatro nodos computacionales (estos nodos son Pentium 2); ahora le costará algo menos de 19 segundos ejecutar el proceso, como se muestra a continuación: Usage: python sum_primes.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Sum of primes below 100 is 1060 Sum of primes below 100000 is 454396537 Sum of primes below 100100 is 454996777 Sum of primes below 100200 is 455898156 Sum of primes below 100300 is 456700218 Sum of primes below 100400 is 457603451 Sum of primes below 100500 is 458407033 Sum of primes below 100600 is 459412387 Sum of primes below 100700 is 460217613 Time elapsed: 18.7660019398 s Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 2 | 22.22 | 18.3807 | 9.190361 | 10.11.12.2:60000 2 | 22.22 | 18.5409 | 9.270460 | 10.11.12.4:60000 1 | 11.11 | 9.1975 | 9.197520 | 10.11.12.5:60000 3 | 33.33 | 14.6504 | 4.883458 | local 1 | 11.11 | 9.2648 | 9.264778 | 10.11.12.3:60000 Time elapsed since server creation 18.7660019398 • Ejemplo 2: Callbacks Este programa demuestra el cómputo paralelo usando callbacks. El programa calculará la suma parcial 1-1/2+1/3-1/4+1/5-1/6+... (En el límite es ln(2)). Esto le costará al host principal unos 283 segundos: Usage: python callback.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Partial sum is 0.69314720556 | diff = -2.50000439239e-08 Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 128 | 100.00 | 283.1016 | 2.211731 | local Time elapsed since server creation 283.22504282
  • 19. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -19- Utilizando todos los nodos del cluster, la operación tardará uno 15 segundos en hacer el cálculo. Usage: python callback.py [ncpus] [ncpus] - the number of workers to run in parallel, if omitted it will be set to the number of processors in the system Starting pp with 1 workers Partial sum is 0.69314720556 | diff = -2.50000439239e-08 Job execution statistics: job count | % of all jobs | job time sum | time per job | job server 26 | 20.31 | 14.5316 | 0.558909 | 10.11.12.2:60000 27 | 21.09 | 15.0113 | 0.555973 | 10.11.12.4:60000 26 | 20.31 | 14.5897 | 0.561143 | 10.11.12.5:60000 23 | 17.97 | 14.2961 | 0.621569 | local 26 | 20.31 | 14.5336 | 0.558986 | 10.11.12.3:60000 Time elapsed since server creation 15.4670109749 Nota: En el CD adjunto se encuentran los archivos de ejemplo en formato de texto (*.txt) y los archivos en formato python (*.py).
  • 20. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -20- Referencias Paginas Web visitadas • Sitio oficial de Python. Información. http://www.python.org/ Este sitio contiene toda la información disponible sobre el lenguaje, incluidos los manuales oficiales y por supuesto las versiones disponibles del programa según la plataforma donde se desee utilizar, listos para descargar. • Sitio con información sobre LAMP. http://www.noticiasdot.com/publicaciones/2004/0504/1105/noticias110504/noti cias110504-6.htm • Sitio para Principiantes http://www.blueportal.org/modules.php?name=News&file=article&sid=5843 Se trata de un link a un libro empieza por lo más básico de la programación en sí y después pasa a explicar la sintaxis de Python con montones de ejemplos. Es el libro idóneo para aquel que no sabe programar ningún lenguaje y quiere empezar con Python. El programador experto necesitará ojearlo por encima e ir mirando los ejemplos para ir viendo como se estructura y cuál es la sintaxis de Python. • Sitio desde donde se descargó la distribución ParallelKanoppix-2.9. http://pareto.uab.es/mcreel/PelicanHPC/download/ • Sitio con Información acerca de ParallelKnoppix http://www.icewalkers.com/Linux/Software/527410/ParallelKnoppix.html • Sitio oficial de ParallelPython. Información y ejemplos. http://www.parallelpython.com/ Documentación Consultada • Python - Reference manual (2004). En inglés. Por Guido van Rossum Fred L. Drake, Jr. Descargado del sitio oficial de Python. http://www.python.org/ • Manual Python. En español. Descargado del sitio oficial de Python. http://www.python.org/ • Python para todos. Por Raúl González Duque http://mundogeek.net/tutorial-python/ • ParallelKnoppix Tutorial http://pareto.uab.es/mcreel/ParallelKnoppix/Tutorial/
  • 21. SISTEMAS OPERATIVOS AVANZADOS - Muccela, José Daniel FRT - UTN -21- INDICE Página Contenido 3 Introducción a Python - ¿Qué es Python? 3 Tipado dinámico 3 Fuertemente tipado 3 Multiplataforma 3 Orientado a objetos 4 ¿Por Qué Python? 4 Instalación de Python 5 Forma de Programar con Python 6 Pros y Contras de Python 7 Indentaciones 7 Python y otros lenguajes 8 Punto “py” (.py) 9 Implementaciones de Python 9 Sistema de objetos 10 Python y sus librerías 10 Python y sus módulos 10 Ejemplo de programa en Python 11 Parallel Python - ¿Qué es Parallel Python? 11 Características de ParallelPython 12 ¿Qué es un clúster? 12 Parallel Knoppix 13 ¿Qué es Parallel Knoppix? 13 ParallelKnoppix + Python 13 Ejemplos - pasos previos 14 Ejecutando ParallelKnoppix 17 Ejemplo 1: Suma de números primos 18 Ejemplo 2: Callbacks 20 Referencias 21 Indice