Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Procesos en Python: un enfoque diferente

No description
by

Manuela Moreno

on 14 January 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Procesos en Python: un enfoque diferente

¿Qué es Python?
Obtiene el semáforo....
Servidor
Posibilidades de Python:
Vamos a hacer un chat. Se creará una aplicación distribuida con un servidor que maneje el paso de mensaje entre los clientes.

Cliente
LISTEN
ACCEPT(): nuevo hilo
secundario
connect()
Hilo Secundario
Hilo principal
"Mensaje"
mensaje=self.recv(8192)

for
client
in
clients.values():
client.send(mensaje)
def

handle_close
(self)
. . .
connect()
root=Tk()

while
1:
data = tcpCliSock.recv()

if
data: self.add(data)
def

callback
(self, event):
message = self.entry_field.get()
tcpCliSock.send(message)
Applicacion()
root.mainloop()
app = Application(root)
def loop0():

def
__init__
(self, master):
. . .

. . .

Servidor
Cliente
s = socket.socket()
s.bind()
s.listen()
c = socket.socket()
sc = s.accept()
sc.send(time.localtime())

recibido = sc.recv(1024)
c.recv(1024)

Procesos en Python:

Un enfoque diferente

¿Por qué usar Python?
- Herencia dinámica
- Multiplataforma
- Tipos dinámicos
- Rápida curva de aprendizaje
Lenguaje interpretado
Influenciado por Java, C y Perl
Orientado a objetos
Imperativo Funcional
Guido van Rossum en 1991
Procesos en Python
Utiliza principalmente:
Módulo threading
Objeto thread
Programas Implementados
crea_hilo.py
Genera el número que indiquemos de objetos de tipo Thread
evento_hilo.py
Coordina threads mediante señales que indican un evento
demonio.py
Thread especial (demonio).
Se ejecuta sin bloquear el hilo principal.
Utiliza el método setDaemon.
Memoria compartida
en Python
Conclusión
Python está en movimiento y en pleno desarrollo
Sin embargo nos ofrece altas ventajas.
import threading

def worker
(count):
print threading.currentThread().getName()
return

def servicio
():
print threading.currentThread().getName(), "capturado con getName\n"

import threading
, time

class
MiThread(threading.Thread):

def __init__
(self, evento):
threading.Thread.__init__(self)
self.evento = evento


def run
(self):


Hay varias formas de implementarlo...

Servidor de hora
c.send("Dime la hora")
c.connect()
Sockets
Colas
Mapeo
Servidor
Cliente
queue.put()
FIFOqueue.get()
LIFOqueue.get()
PriorityQueue.get()
import
queue
import
mmap
file = open("Hola.txt","r+")
data = mmap.mmap( file.fileno() , size )
print repr(data[:10])
¿Alguna pregunta?
Semáforos en Python
Aplicación productor consumidor
Ejemplo de uso de semáforos:
Productor - Consumidor
Función que ejecutan los "productores"
impot
time
import
threading
import
multiprocessing
sincroniza los procesos que acceden a un determinado recurso
Función que ejecutan los "consumidores"
Permiten la ejecución simultánea de N procesos o hilos que soliciten un recurso.
Son variables tipo "contador", que se incrementan y decrementan según la petición de los procesos o hilos.
Ejemplo de uso de sockets
Aseguran exclusión mutua al acceder a una variable o recurso compartido.
Ejemplo de uso de colas:
Cronómetro
Gracias por la atención
Solicita el semafóro, y lo obtendrá (si le toca) cuando éste, esté disponible
...Y el consumidor quiere extraer
información del buffer...
Productor quiere dejar información en el buffer...
c.close()
sc.close()
Full transcript