Parallel python sistemas operativos avanzados

21
P P a a r r a a l l l l e e l l P P y y t t h h o o n n

Transcript of Parallel python sistemas operativos avanzados

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 enter ���� Resultado 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/noticias110504-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