Advertisement
MiguelazoDS

Untitled

Oct 25th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.60 KB | None | 0 0
  1. import Sensor_merge_lineal
  2. import random
  3. import time
  4. import numpy
  5. import sys
  6. from multiprocessing import Process, Manager, Lock
  7. from multiprocessing.managers import BaseManager
  8.  
  9.  
  10. def alarmas(object, num_process, tiempo_limite):
  11.     tiempo_inicio = time.time()
  12.     while (1):
  13.         lista = object.get_obj()
  14.         for i in range (0,num_process):
  15.             if(lista[i] > 0):
  16.                 tiempo = time.time() - lista[i]
  17.                 object.set_value(i, -1)
  18.                 object.set_value_tiempos(tiempo)
  19.  
  20. class ListObj(object):
  21.         def __init__(self, lista, lista_tiempos_promedios):
  22.                 self.lista = lista
  23.                 self.lista_tiempos_promedios = lista_tiempos_promedios
  24.  
  25.         def set_value(self, indice_lista, tiempo_atencion):
  26.                 self.lista[indice_lista] = tiempo_atencion
  27.  
  28.         def set_value_tiempos(self, tiempo_atencion):  #para estadistica
  29.                 self.lista_tiempos_promedios.append(tiempo_atencion)
  30.  
  31.         def get_obj(self):
  32.                 return self.lista
  33.  
  34.         def get_value_tiempos(self): #para estadistica
  35.                 return self.lista_tiempos_promedios
  36.  
  37. if __name__=="__main__":
  38.         num_process = 1
  39.         tamano_de_matriz = 10
  40.         if len(sys.argv) >2:
  41.             temp1=int(sys.argv[2])
  42.             if sys.argv[2].isdigit() and temp1 > 10 and temp1 < 100000:
  43.                 tamano_de_matriz=temp1#cantidad de valores
  44.         if len(sys.argv) >1:
  45.             temp2=int(sys.argv[1])
  46.             if sys.argv[1].isdigit() and temp2 > 1 and temp2 < 100:
  47.                 num_process = temp2 #cantidad de sensores
  48.  
  49.         BaseManager.register('ListObj', ListObj)
  50.         manager = BaseManager()
  51.         manager.start()
  52.  
  53.         tiempo_limite = 5 #tiempo que corre alarmas
  54.         lista=list(range(num_process))
  55.         lista = [-1 for i in range(num_process)] #inicializamos con -1
  56.         lista_tiempos_promedios = []
  57.         listObl = manager.ListObj(lista,lista_tiempos_promedios)
  58.  
  59.         process_list = []
  60.         for p in range(num_process):
  61.                 proc = Sensor_merge_lineal.Sensor(listObl, p, tamano_de_matriz)
  62.                 process_list.append(proc)
  63.  
  64.         for x in range(num_process):
  65.                 process_list[x].start()
  66.  
  67.         alarmas= Process(target=alarmas, args=(listObl,num_process, tiempo_limite))
  68.         alarmas.start()
  69.  
  70.         time.sleep(tiempo_limite)
  71.  
  72.         for x in range(num_process):
  73.                 process_list[x].terminate()
  74.  
  75.         alarmas.terminate()
  76.  
  77.         media = numpy.mean(listObl.get_value_tiempos() ) #promedio de ti
  78.         print(media)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement