Source code for obci.configs.tests.protobuf.sample_logger
#!/usr/bin/env python3
import time
[docs]class SampleLogger(object):
def __init__(self, log_interval=100):
self.log_interval = log_interval
self.samples_got = 0
self.start_time = time.time()
self.start_i = self.start_time
self.end_i = self.start_time + 1
self.log = []
[docs] def log_sample(self, timestamp=None):
self.samples_got += 1
if self.samples_got % self.log_interval == 0:
self.end_i = time.time()
self.log.append((self.end_i - self.start_i, self.samples_got, timestamp))
self.start_i = self.end_i
[docs] def mark_start(self):
self.start_time = time.time()
self.start_i = self.start_time
[docs] def mark_end(self):
self.end_i = time.time()
[docs] def report(self, filename='log_py'):
with open(filename, 'w') as f:
f.write("Log interval: " + str(self.log_interval) + " samples\n")
f.write("Partial rates:\n")
for log in self.log:
f.write(str(float(self.log_interval) / log[0]) + " samples/s\n")
f.write(str(log[1]) + " timestamp: " + str(log[2]) + "\n")
f.write("Average:\n")
f.write(str(float(self.samples_got) / (self.end_i - self.start_time)))
if __name__ == "__main__":
SampleLogger().report()