On May 3, 2015, at 10:22, Cecil Westerhof wrote:

> For testing I want my messages time stamped like:

For progress reporting, I often use the module below (eta.py), which also gives 
a projected time of completion:

import datetime, time, sys
etastart = 0

def eta(done, total, s, reportinterval=100, datetimeformat="%d %b %H:%M:%S"):
    global etastart
    if done == 0:
        etastart = datetime.datetime.now()
    if not done % reportinterval:
        noww = datetime.datetime.now()
        prtnow = noww.strftime(datetimeformat)
        if done:
            if not isinstance(etastart, datetime.datetime): raise 
RuntimeError("You should call eta() at least once with done=0")
            elapsed = noww - etastart
            secsperitem = float(elapsed.seconds) / done    
            totalsecs = secsperitem * total
            eta = etastart + datetime.timedelta(0, totalsecs)
            prteta = eta.strftime(datetimeformat)
            msg = "now %s, eta %s (%d/%d) %s" % (prtnow, prteta, done, total, s)
        else:
            msg = "now %s (%d/%d) %s" % (prtnow, done, total, s)
        sys.stderr.write(msg + "\n")
        
if __name__ == "__main__":
    for i in range(10):
        eta(i, 10, "idling for ten seconds", 1, "%H:%M:%S")
        time.sleep(1)



-- 
"You can't actually make computers run faster, you can only make them do less." 
- RiderOfGiraffes

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to