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]
31 print 'Soy '+str(self.id)+' y agarre el palito derecho'
38 def dejarPalitoDerecho(self):
39 if self.id+1 == len(palitos): ind = 0
44 print 'Soy '+str(self.id)+' y solte el palito derecho'
47 def agarrarPalitoIzquierdo(self):
48 self.izquierdo = palitos[self.id]
50 palitos[self.id] = False
51 print 'Soy '+str(self.id)+' y agarre el palito izquierdo'
54 self.izquierdo = False
58 t = self.rnd.randint(1,5)
59 print 'Soy '+str(self.id)+' y voy a pensar durante '+str(t)+' segundos'
63 if self.derecho and self.izquierdo:
64 t = self.rnd.randint(1,5)
65 print 'Soy '+str(self.id)+' y voy a comer durante '+str(t)+' segundos'
66 self.comi = self.comi + 1
68 if self.id+1 == len(palitos): ind = 0
70 self.derecho = self.izquierdo = False
71 palitos[self.id] = True
73 print 'Soy '+str(self.id)+' y solte los palitos'
78 if self.cant == self.comi: return True
82 while not self.lleno():
83 if self.agarrarPalitoDerecho():
84 self.agarrarPalitoIzquierdo()
85 else: self.dejarPalitoDerecho()
89 if __name__ == '__main__':
91 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>"
95 for i in range(int(sys.argv[1])):
97 chinos.append(filosofo(i,int(sys.argv[2])))