Concurrentes I.
[z.facultad/75.59/ejercicios.git] / minimo.py
1 #!/usr/bin/env python
2
3 from threading import Thread, Lock
4 from sys import argv
5
6 minimo = 0
7 minimo_lock = Lock()
8
9 class Worker(Thread):
10         def __init__(self, lista):
11                 Thread.__init__(self)
12                 self.lista = lista
13         def run(self):
14                 for num in self.lista:
15                         minimo_lock.acquire()
16                         if num < minimo:
17                                 minimo = num
18                         minimo_lock.release()
19
20 cant = int(argv[1])
21 lista = argv[2:]
22 total = len(lista)
23 size = total/cant
24 workers = []
25
26 print "Lista a ordenar:", lista
27
28 for n in xrange(0, total-2):
29         w = Worker(lista[n*size:(n+1)*size])
30         workers.append(w)
31
32 for w in workers:
33         w.start()
34
35 for w in workers:
36         w.join()
37