Example #1
0
def calcola_classifiche_singolo_processo(squadre, giornate, all_permutations,
                                         starting_time):
    """Calcola la 'classifica delle classifiche' utilizzando un singolo processo"""
    classifica_calendari = dict(zip(squadre, [0] * Costanti.NUM_SQUADRE))
    print 'in elaborazione...'
    for perm in all_permutations:
        calendario = Calendario(perm, giornate)
        calendario.calcola_classifica()
        squadre_campioni = calendario.get_squadra_campione()
        classifica_attuale = dict(zip(squadre, [0] * Costanti.NUM_SQUADRE))
        for sc in squadre_campioni:
            classifica_attuale[sc] = 1
        classifica_calendari = dict(
            Counter(classifica_calendari) + Counter(classifica_attuale))
    utils.esporta_classifica_csv(classifica_calendari)
    print 'Tempo impiegato: {0:.2f} s'.format(time.time() - starting_time)
Example #2
0
def calcola_classifiche_distribuito(squadre, giornate, all_permutations,
                                    starting_time):
    """Calcola la 'classifica delle classifiche' utilizzando un pool di processi"""
    print '{} processi da lanciare per {} calendari'.format(
        Costanti.NUM_PROCESSES, len(all_permutations))
    print 'inizializzazione...'
    calendari = [Calendario(perm, giornate) for perm in all_permutations]
    initialization_time = time.time()
    print 'Tempo impiegato per inizializzazione: {0:.2f} s'.format(
        initialization_time - starting_time)
    print 'in elaborazione...'
    pool = Pool(processes=Costanti.NUM_PROCESSES)
    print '\tmap...'
    classifiche = pool.map(calcola_classifica_distribuito_map, calendari)
    print '\treduce...'
    classifica_calendari = reduce(calcola_classifica_distribuito_reduce,
                                  classifiche)
    utils.esporta_classifica_csv(classifica_calendari)
    ending_time = time.time()
    print 'Tempo impiegato per elaborazione: {0:.2f} s'.format(
        ending_time - initialization_time)
    print 'Tempo impiegato totale: {0:.2f} s'.format(time.time() -
                                                     starting_time)
Example #3
0
 def tarefa_calendario(self):
     self.c = Calendario()
     self.setCentralWidget(self.c)
    def input_correcto(self):
        '''
        Revisa si el parametro ingresado en el superinput (self.entrada) es de alguno de los tipos permitidos en
        self.lista
        Si lo es, retorna True. Si no, False.
        '''
        v1, v2, v3, v4, v5, v6 = False, False, False, False, False, False
        for i in self.lista:
            if self.es_int(i):
                try:
                    self.entrada = int(self.entrada)
                    v1 = True
                except:
                    v1 = False
            elif self.es_float(i):
                try:
                    self.entrada = float(self.entrada)
                    v2 = True
                except:
                    v2 = False
            elif self.es_mail(i):
                print('Aún no está creada la opcion mail del superinput')
                v3 = False
            elif self.es_str(i):
                v4 = True
            elif i == 'fecha':
                v5 = True
                for l in self.entrada:
                    if not (l.isnumeric() or l == '/'):
                        v5 = False

                if (not self.mensaje_error) and (not v5):
                    self.mensaje_error = 'Formato de fecha incorrecto, ingresar de nuevo.'

                if v5:
                    dia = self.entrada[:self.entrada.find('/')]
                    fecha = self.entrada[self.entrada.find('/') + 1:]
                    mes = fecha[:fecha.find('/')]
                    fecha = fecha[fecha.find('/') + 1:]
                    ano = fecha
                    c = Calendario()
                    if not c.fecha_valida(dia, mes, ano):
                        v5 = False
                        if not self.mensaje_error:
                            self.mensaje_error = 'Fecha no válida, ingresar otra fecha.'

            elif i == 'hora':
                v6 = True
                if len(self.entrada) != 8:
                    v6 = False
                if v6:
                    for l in self.entrada:
                        if not (l.isnumeric() or l == ':'):
                            v6 = False
                if not self.mensaje_error and not v6:
                    self.mensaje_error = 'Formato de hora incorrecto, ingresar de nuevo.'
                if v6:
                    if self.entrada[0] == 0:
                        horas = int(self.entrada[1])
                    else:
                        horas = int(self.entrada[:2])
                    if self.entrada[3] == 0:
                        minutos = int(self.entrada[4])
                    else:
                        minutos = int(self.entrada[3:5])
                    if self.entrada[6] == 0:
                        segundos = int(self.entrada[7])
                    else:
                        segundos = int(self.entrada[6:])

                    if not (horas >= 0 and horas <= 23):
                        v6 = False
                    if not (minutos >= 0 and minutos <= 59):
                        v6 = False
                    if not (segundos >= 0 and segundos <= 59):
                        v6 = False

                if not v6 and not self.mensaje_error:
                    self.mensaje_error = 'Hora no válida, ingresar otra hora.'
                '''
                    Este segmento esta encaminado para que el programa acepte horas no solo del formato hh:mm:ss, sino que
                    también horas con el formato hh:mm o simplemente hh, supondiendo que todo lo demás es 0.
                    Terminar más adelante.
                    Hay partes que se deben usar del algoritmo actualmente funcional del programa (que acepta solo hh:mm:ss)


                    if v6:
                        hora = ''
                        if self.entrada.find(':') != -1:
                            horas = self.entrada[:self.entrada.find(':')]
                            hora = self.entrada[self.entrada.find(':') + 1:]
                        else:
                            horas = self.entrada

                        if hora.find(':') != -1:
                            minutos = hora[:hora.find(':')]
                            hora = hora[hora.find(':') + 1:]
                        else:
                            minutos = hora

                        if minutos != hora:
                            segundos = hora
                '''

        return (v1 or v2 or v3 or v4 or v5 or v6)
Example #5
0
Altayskiy = Campo(
    "Altayskiy",
    "Алтаыскиы",
    10,
    0,
    "Não",
    0,
    "Frio", ((int(screen.get_width() * .6), int(screen.get_height() * .4))),
    foto="jo.jpg")

lista_gulags = [
    Trofimovsk, Solovetsky, Norilsk, Sevvostlag, Pechorlag, Karlag, Altayskiy
]

#Criação do calendário
calendario = Calendario(screen, sw, sh)

click = False


#Seleção inicial de Gulag
def menu_selecao():

    screen.fill((0, 0, 0))

    global sh, sw

    running = True
    click = False

    #Setup dos botões