Advertisement
Guest User

Untitled

a guest
Sep 24th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. from multiprocessing import Pool
  2. import time
  3.  
  4. class Sensor_A:
  5.     def __init__(self):
  6.         self.measurement_interval = 2
  7.     def get_data(self):
  8.         time.sleep(0.75)
  9.         return 1
  10.  
  11. class Sensor_B:
  12.     def __init__(self):
  13.         self.measurement_interval = 3
  14.     def get_data(self):
  15.         time.sleep(0.6)
  16.         return 2
  17.  
  18. def worker(obj):
  19.     if not obj:
  20.         return None
  21.     else:
  22.         return getattr(obj, 'get_data')()
  23.  
  24. def measure(n, sensor_list, interval):
  25.     for i in range(0, n):
  26.         start_time = time.time()
  27.         measure_sensors = [ sensor
  28.                             if i%sensor.measurement_interval==0
  29.                             else None
  30.                             for sensor in sensor_list ]
  31.         with Pool(4) as p:
  32.             results = p.map(worker, measure_sensors)
  33.             waittime = (start_time
  34.                     + interval
  35.                     - time.time())
  36.         time.sleep(waittime)
  37.         print('{} at {}'.format(repr(results), time.time()))
  38.  
  39. if __name__=='__main__':
  40.     sensor_list = [ Sensor_A(), Sensor_B(), Sensor_B() ]
  41.     measure(5, sensor_list, 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement