def leer(self,NombreTexto,p):

        #Extrae un proceso de un archivo .txt y lo inserta en la
        #cola de prioridades
        
        data = open(NombreTexto,'r')
        lineas = len(open(NombreTexto).readlines())
        print('Se iniciaran ',lineas,' procesos nuevos')
        print()

        p = [None]*lineas

        for iter in range(lineas):

            p[iter] = Proyecto2ClassProcesos.proceso()

        for j in range(lineas):
                
            medidaJuntas = data.readline()
            medidaSep = medidaJuntas.split()
            p[j].nombre = str(medidaSep[1])
            p[j].prioridad = int(medidaSep[2])
            p[j].memoria = int(medidaSep[3])
            p[j].duracion = int(medidaSep[4])
            p[j].subprocesos = int(medidaSep[5])
                
            print('Proceso :',p[j].nombre )
            print()
            print('Prioridad: ',p[j].prioridad)
            print('Memoria usada',p[j].memoria)
            print('Duracion',p[j].duracion)
            print('Numero de subprocesos',p[j].subprocesos)
            print()

            if p[j].subprocesos > 0:
                   
                p[j].ListaSubprocesos = [None]*p[j].subprocesos
                
                for iter in range(p[j].subprocesos):
                    p[j].ListaSubprocesos[iter] = (
                        Proyecto2ClassProcesos.proceso())
                    p[j].ListaSubprocesos[iter].nombre = (
                        p[j].nombre +' - ' + str(iter))
                    p[j].ListaSubprocesos[iter].prioridad = (
                       (p[j].prioridad))
                    p[j].ListaSubprocesos[iter].memoria = (
                       (p[j].memoria))                    
                    p[j].ListaSubprocesos[iter].duracion = (
                       (p[j].duracion))

                
                for iter in range(p[j].subprocesos):
                    
                    if (iter < (p[j].subprocesos - 1)):

                       p[j].ListaSubprocesos[iter].subprocesos = 1
                       p[j].ListaSubprocesos[iter].ListaSubprocesos = []
                       p[j].ListaSubprocesos[iter].ListaSubprocesos.append(
                           p[j].ListaSubprocesos[iter + 1])

#------------------------COLA PRIORIDAD-----------------------------#

    # Organiza los procedimientos por prioridad utilizando un TAD
    # cola implementado en otro archivo.py

        #Asignamos la clase cola prioridad a ProcOrd para poder
        #utilizar los procesos del tad y ordenarlos

        ProcOrd = Proyecto2ClassColaPrio.ColaPrio(len(p))

        #Depositamos nuestra cola ordenada en un arreglo, elemento
        #por elemento
        
        for j in range(lineas):

            ArregloProcOrd = ProcOrd.proc_encolar(p[j],
                                                  p[j].prioridad) 

        #Comprobamos que se guardaron los elementos imprimiendolos
        #junto a sus prioridades para comprobar que se ordenaron de
        #manera correcta
            
        return ArregloProcOrd
    def AsignarProceso(self,proceso,Tiempo):

        """
        Busca el procesador con menos procesos en su pila de procesos
        empilados y empilamos "proceso" a la pila de ese procesador
        {Pre: "proceso" pertenece a la clase proceso}
        {Post: ProcMnOC.}
        """

        #print('Se asignara el proceso: -',proceso.nombre,'-')

        #Inicializamos nuestra variable de comparacion para empezar
        #a comparar el tamaño de todas las pilas de los procesadores

        ProcMnOc = len(self.ListaProcesadores[0].
                       procesosEmpilados.elementos)

        #Comparamos el tamaño de cada pila de procesos empilados y
        #elegimos la meor de todas ellas
        
        for Comparacion in range(len(self.ListaProcesadores)- 1):

            comp2 = len(self.ListaProcesadores[Comparacion + 1].
                        procesosEmpilados.elementos)
            ProcMnOc = min(ProcMnOc,comp2)

        #Efectuamos la asignacion al procesador con menos procesos
        #con un proceso de "empilar"
        
        if (((ProcMnOc == len(self.ListaProcesadores[0].
                            procesosEmpilados.elementos))) and
            self.ListaProcesadores[0].procesosEmpilados.elementos == []):

            self.ListaProcesadores[0].procesosEmpilados.proc_empilar(proceso)
            self.MemoriaSimu = self.MemoriaSimu + proceso.memoria
            self.ListaProcesadores[0].EstadoMemoria = (
                self.ListaProcesadores[0].EstadoMemoria
                + proceso.memoria)


            if (proceso.subprocesos > 0):

                salida.write(str(Tiempo))
                salida.write(' Empilando ')
                salida.write(str(p[reparte].subprocesos))
                salida.write(' subprocesos del proceso ')
                salida.write(p[reparte].nombre)
                salida.write(' en el procesador 1')
                salida.write('\n')
            
            salida.write(str(Tiempo))
            salida.write(' Inicializando proceso ')
            salida.write(p[reparte].nombre)
            salida.write(' en el procesador 1')
            salida.write('\n')

            if proceso.subprocesos > 0:
                   
                self.subprocesosencurso = [None]*proceso.subprocesos
                
                for iter in range(proceso.subprocesos):
                    self.subprocesosencurso[iter] = (
                       (Proyecto2ClassProcesos.proceso()))
                    self.subprocesosencurso[iter].nombre = (((proceso.nombre) + '-' + str(iter)))
                    self.subprocesosencurso[iter].prioridad = (
                       (proceso.prioridad))
                    self.subprocesosencurso[iter].duracion = (
                       (proceso.duracion))
                    self.subprocesosencurso[iter]
            
        elif (((ProcMnOc == len(self.ListaProcesadores[1].
                            procesosEmpilados.elementos))) and
            self.ListaProcesadores[1].procesosEmpilados.elementos == []):

            self.ListaProcesadores[1].procesosEmpilados.proc_empilar(proceso)
            self.MemoriaSimu = self.MemoriaSimu + proceso.memoria
            self.ListaProcesadores[1].EstadoMemoria = (
                self.ListaProcesadores[1].EstadoMemoria + proceso.memoria)

            if (proceso.subprocesos > 0):

                salida.write(str(Tiempo))
                salida.write(' Empilando ')
                salida.write(str(p[reparte].subprocesos))
                salida.write(' subprocesos del proceso ')
                salida.write(p[reparte].nombre)
                salida.write(' en el procesador 2')
                salida.write('\n')
            
            salida.write(str(Tiempo))
            salida.write(' Inicializando proceso ')
            salida.write(p[reparte].nombre)
            salida.write(' en el procesador 2')
            salida.write('\n')

            if proceso.subprocesos > 0:

                self.subprocesosencurso = [None]*proceso.subprocesos
                
                for iter in range(proceso.subprocesos):
                    self.subprocesosencurso[iter] = (
                       (Proyecto2ClassProcesos.proceso()))
                    self.subprocesosencurso[iter].nombre = (((proceso.nombre) +'-' + str(iter)))
                    self.subprocesosencurso[iter].prioridad = (
                       (proceso.prioridad))
                    self.subprocesosencurso[iter].duracion = (
                       (proceso.duracion))
                    self.subprocesosencurso[iter]
                
        elif (((ProcMnOc == len(self.ListaProcesadores[2].
                            procesosEmpilados.elementos))) and
            self.ListaProcesadores[2].procesosEmpilados.elementos == []):

            self.ListaProcesadores[2].procesosEmpilados.proc_empilar(proceso)
            self.MemoriaSimu = self.MemoriaSimu + proceso.memoria
            self.ListaProcesadores[2].EstadoMemoria = (
                self.ListaProcesadores[2].EstadoMemoria + proceso.memoria)

            if (proceso.subprocesos > 0):

                salida.write(str(Tiempo))
                salida.write(' Empilando ')
                salida.write(str(p[reparte].subprocesos))
                salida.write(' subprocesos del proceso ')
                salida.write(p[reparte].nombre)
                salida.write(' en el procesador 3')
                salida.write('\n')
            
            salida.write(str(Tiempo))
            salida.write(' Inicializando proceso ')
            salida.write(p[reparte].nombre)
            salida.write(' en el procesador 3')
            salida.write('\n')

            if proceso.subprocesos > 0:
                   
                self.subprocesosencurso = [None]*proceso.subprocesos
                
                for iter in range(proceso.subprocesos):
                    self.subprocesosencurso[iter] = (
                       (Proyecto2ClassProcesos.proceso()))
                    self.subprocesosencurso[iter].nombre = (((proceso.nombre) +'-' + str(iter)))
                    self.subprocesosencurso[iter].prioridad = (
                       (proceso.prioridad))
                    self.subprocesosencurso[iter].duracion = (
                       (proceso.duracion))
                    self.subprocesosencurso[iter]
                    
        elif (((ProcMnOc == len(self.ListaProcesadores[3].
                            procesosEmpilados.elementos))) and
            self.ListaProcesadores[3].procesosEmpilados.elementos == []):

            self.ListaProcesadores[3].procesosEmpilados.proc_empilar(proceso)
            self.MemoriaSimu = self.MemoriaSimu + proceso.memoria
            self.ListaProcesadores[3].EstadoMemoria = (
                self.ListaProcesadores[3].EstadoMemoria + proceso.memoria)

            if (proceso.subprocesos > 0):

                salida.write(str(Tiempo))
                salida.write(' Empilando ')
                salida.write(str(p[reparte].subprocesos))
                salida.write(' subprocesos del proceso ')
                salida.write(p[reparte].nombre)
                salida.write(' en el procesador 4')
                salida.write('\n')
            
            salida.write(str(Tiempo))
            salida.write(' Inicializando proceso ')
            salida.write(p[reparte].nombre)
            salida.write(' en el procesador 4')
            salida.write('\n')

            if proceso.subprocesos > 0:

                self.subprocesosencurso = [None]*proceso.subprocesos
                
                for iter in range(proceso.subprocesos):
                    self.subprocesosencurso[iter] = (
                       (Proyecto2ClassProcesos.proceso()))
                    self.subprocesosencurso[iter].nombre = (((proceso.nombre) +'-' + str(iter)))
                    self.subprocesosencurso[iter].prioridad = (
                       (proceso.prioridad))
                    self.subprocesosencurso[iter].duracion = (
                       (proceso.duracion))
                    self.subprocesosencurso[iter]
        
        for imprimir in range(4):

            for imprimir2 in self.ListaProcesadores[imprimir].procesosEmpilados.elementos:
                print('Los procesos del procesador ',imprimir + 1,
                      'son : ',imprimir2.nombre,
                      '- prioridad: ',imprimir2.prioridad)