Async CSV performance logging
Project description
Async CSV Logger
This module is a async csv logger that helps you log performance of your algorithm.
Description
This module is intented to be a csv logger which will write to file async-ly.
With the hope to have minimum performance impact on benchmarking your algorithm (i.e. I/O blocking to write to disk), this is especially useful for logging performance at each iteration/time-step. Internally, it utilise threading to async write to file.
There are two way to initialise and use the logger.
Install
pip install asynccsv
1. Recommended way (with block)
import time
import datetime
from asynccsv import AsyncCSVLogger
with AsyncCSVLogger('path_of_your_log.csv') as logger:
# csv titles
logger.write(['Time', 'Accuracy', 'Num of nodes'])
# do your other stuff
# ......
for i in range(10):
# perform calculation
# ....
# write results to file
logger.write([datetime.datetime.now().strftime("%S.%f"), acc, num_nodes])
time.sleep(0.5)
2. The normal way
import time
from asynccsv import AsyncCSVLogger
class MyAwesomeAlgorithm():
def __init__(self):
# with the 'log_timestamp' flag it will automatically log timestamp
self.logger = AsyncCSVLogger('path_of_your_log.csv', log_timestamp=True)
self.logger.write(['Time', 'Accuracy', 'Num of nodes'])
def run(self):
# perform calculation
# ...
logger.write([acc, num_nodes])
time.sleep(0.5)
if __name__ == '__main__':
awesome = MyAwesomeAlgorithm()
for i in range(10):
awesome.run()
# You SHOULD run this to properly close the threading and force
# everything to be written to disk
# This is automatically done by the 'with' block in previous example
awesome.logger.close()
With both methods, the final content of path_of_your_log.csv
will look something like:
"Time","Accuracy","Num of nodes"
"57.689359","92.5","11"
"58.189979","93.5","12"
"58.690520","94.22","13"
"59.191268","93.5","15"
"59.692062","92.2","17"
"00.192850","92.4","22"
"00.693661","94.8","26"
"01.194634","96.6","27"
"01.695368","94.1","30"
"02.196014","97.5","42"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
asynccsv-1.0.2.tar.gz
(2.2 kB
view hashes)