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)
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)
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)
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