AHORA SI RESUELTO, SINCRONIZADO Y FUNCIONANDO (por si sirve de ayuda a alguien)
    
Código Python:
Ver original- #Este es el main 
-   
- # Simular con hilos un sistema de reservación de vuelos. Las personas pueden consultar y reservar vuelos. 
- # Hacer la sincronización con múltiples personas accediendo al registro de vuelos. 
- # Cuando se reserva no se puede consultar y viceversa. Lanzar 20 hilos 
- # 1000 lugares en el avion. 
-   
- from Buffer import Vuelo 
- from Ev_lector import Consulta 
- from Ev_escritor import Reserva 
-   
- cant_asi=20 
- cant_consultas=5 
- cant_reservas=5 
- vuelo = Vuelo(cant_asi)              
- lector = Consulta("Consulta", vuelo, cant_consultas) 
- escritor = Reserva("Reserva", vuelo, cant_reservas) 
-   
- lector.start() 
- escritor.start() 
-   
- lector.join() 
- escritor.join() 
-   
- asi_oc=vuelo.get("MAIN") 
- print("Lista final de asienos reservados:\n{0}".format(str(asi_oc))) 
Código Python:
Ver original- # "Ev_lector" 
-   
- import threading 
- import random 
- import time 
-   
- class Consulta(threading.Thread): 
-      
-     def __init__(self, nombreHilo, asientos, cant): 
-   
-         threading.Thread.__init__(self, name = nombreHilo) 
-         self.cant=cant 
-         self.asientos=asientos 
-                  
-     def run(self): 
-                  
-         for i in range(self.cant): 
-             #time.sleep(random.randrange(5)) 
-             asi_oc=self.asientos.get(self.name) 
-             print("El hilo {1} consulta la lista de asientos ocupados y es la siguiente: \n {0} \n".format(str(asi_oc), str(self.name))) 
Código Python:
Ver original- # "Ev_escritor" 
-   
- import threading 
- import random 
- import time 
-   
- class Reserva(threading.Thread): 
-      
-     def __init__(self, nombreHilo, asientos, cant): 
-   
-         threading.Thread.__init__(self, name=nombreHilo) 
-         self.cant=cant 
-         self.asientos=asientos 
-          
-     def run(self): 
-         #Reserva 
-         for i in range(self.cant): 
-             #time.sleep(random.randrange(5)) 
-             a=random.randint(1,self.asientos.get_cant()) 
-             while (self.asientos.vuelo.count(a)==0): 
-                 a=random.randint(1,self.asientos.get_cant()) 
-             self.asientos.set(a, self.name) 
-             print ("El hilo "+str(self.name)+" reserva el asiento "+ str(a)) 
Código Python:
Ver original- # "Buffer" 
-   
- import threading 
- import time 
- import random 
-   
- class Vuelo: 
-   
-     def __init__(self, cant): 
-         self.vuelo = [] 
-         self.cant=cant 
-         for v in range(1,self.cant+1): 
-             self.vuelo.append(v) 
-         #print(str(self.vuelo)) <--- Era para verificar el armado de la lista de asientos 
-         self.ocup=[] 
-         self.candado = threading.Lock() 
-                      
-     def set(self, asiento, nombre): 
-         self.candado.acquire() 
-         print("-*"*25) 
-         print("Toma control "+nombre)            #Para verificar que no se pise el hilo 
-         time.sleep(random.randrange(5)) 
-         self.ocup.append(asiento) 
-         self.vuelo.remove(asiento) 
-         print("Suelta control "+nombre) 
-         self.candado.release() 
-          
-     def get(self, nombre): 
-         self.candado.acquire() 
-         print("-"*50) 
-         print("Toma control "+nombre)            #Para verificar que no se pise el hilo 
-         asi_oc=self.ocup 
-         asi_oc.sort() 
-         print("Suelta control "+nombre) 
-         self.candado.release() 
-         return asi_oc 
-          
-     def get_cant(self): 
-         par=self.cant 
-         return par