1 #! /usr/bin/env python2.4
13 class filosofo(threading.Thread):
14 def __init__(self, numeracion, cant):
15 threading.Thread.__init__(self)
17 self.rnd = random.Random()
18 self.cant = cant # cantidad de veces que va a comer
19 self.comi = 0 # cantidad de veces que comio
21 self.izquierdo = False
25 def agarrarPalitoDerecho(self):
26 if self.id+1 == len(palitos): ind = 0
28 self.derecho = palitos[ind]
30 print 'Soy '+str(self.id)+' y agarre el palito derecho'
31 else: self.derecho = False
34 def agarrarPalitoIzquierdo(self):
35 self.izquierdo = palitos[self.id]
37 print 'Soy '+str(self.id)+' y agarre el palito izquierdo'
38 else: self.izquierdo = False
41 t = self.rnd.randint(0,5)
42 print 'Soy '+str(self.id)+' y voy a pensar durante '+str(t)+' segundos'
46 if self.derecho and self.izquierdo:
47 print 'Soy '+str(self.id)+' y voy a comer'
48 self.comi = self.comi + 1
49 self.izquierdo = self.derecho = False
50 time.sleep(self.rnd.randint(0,5))
51 if self.id+1 == len(palitos): ind = 0
53 palitos[self.id] = True
55 'Soy '+str(self.id)+' y solte los palitos'
60 if self.cant == self.comi: return True
64 while not self.lleno():
65 self.agarrarPalitoDerecho()
66 self.agarrarPalitoIzquierdo()
69 else: time.sleep(5) #comiendo
71 if __name__ == '__main__':
73 print "Modo de uso: "+ str(sys.argv[0]) + "<Cantidad de chinos invitados a la fiesta> <Cantidad de rondas que estara pensando o comiendo cada chino>"
77 for i in range(int(sys.argv[1])):
79 chinos.append(filosofo(i,int(sys.argv[2])))