ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Cena Filosofos Comenzales Algoritmo


Enviado por   •  1 de Octubre de 2013  •  382 Palabras (2 Páginas)  •  401 Visitas

Página 1 de 2

import threading

import random

import time

class Filosofo(threading.Thread):

corriendo = True

def __init__(self, nom, tenIzq, tenDer):

threading.Thread.__init__(self)

self.nombre = nom

self.tenIzq = tenIzq

self.tenDer = tenDer

def run(self):

while(self.corriendo):

time.sleep(random.uniform(3, 13))

print '%s esta hambriento' %self.nombre

self.cena()

def cena(self):

ten1, ten2 = self.tenIzq, self.tenDer

while self.corriendo:

ten1.acquire(True)

candado = ten2.acquire(False)

if candado: break

ten1.release()

print'%s intercambio de tenedores' %self.nombre

ten1, ten2 = ten2, ten1

else:

return

self.cenando()

ten1.release()

ten2.release()

def cenando(self):

print '%s empieza a cenar' %self.name

time.sleep(random.uniform(1, 10))

print '%s termina de comer y piensa' %self.name

def cenaFilo():

tenedores = [threading.Lock() for n in range(5)]

nomFilo = ('max', 'roberto', 'juan', 'ramon', 'emman')

filosofos = [Filosofo(nomFilo[i], tenedores[i%5], tenedores[(i+1)%5]) \

for i in range(5)]

random.seed(507129)

Filosofo.corriendo = True

for p in filosofos: p.start()

time.sleep(100)

Filosofo.corriendo = False

print "Termino"

cenaFilo()

...

Descargar como (para miembros actualizados) txt (1 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com