Files
@ 3b755a58a8b5
Branch filter:
Location: Morevna/src/stats.py - annotation
3b755a58a8b5
888 B
text/x-python
resettable stats
41ea9614ce8c 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 41ea9614ce8c 41ea9614ce8c 41ea9614ce8c 3b755a58a8b5 41ea9614ce8c 41ea9614ce8c 41ea9614ce8c 3b755a58a8b5 41ea9614ce8c 41ea9614ce8c 5813971dbecc 3b755a58a8b5 41ea9614ce8c 41ea9614ce8c 41ea9614ce8c 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 3b755a58a8b5 41ea9614ce8c 41ea9614ce8c 41ea9614ce8c d76b98d421ae d76b98d421ae d76b98d421ae 3b755a58a8b5 d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae d76b98d421ae | class Stats:
def __init__(self):
self.received=0
self.sent=0
self.exchangedNodes=0
self.transferredBlocks=0
stats=Stats()
def logReceived(data):
stats.received+=len(data)
def logSent(data):
stats.sent+=len(data)
def logExchangedNode(k=1):
stats.exchangedNodes+=k
def logTransferredBlock():
stats.transferredBlocks+=1
def reset():
global stats
stats=Stats()
def report():
return """received {rf} ({r:,} B)
sent {sf} ({s:,} B)
exchanged {nodes:,} hash tree nodes
transferred {blocks:,} blocks""".format(rf=formatBytes(stats.received), r=stats.received, sf=formatBytes(stats.sent), s=stats.sent, nodes=stats.exchangedNodes, blocks=stats.transferredBlocks)
def formatBytes(x):
exts=["B","kiB","MiB","GiB","TiB","PiB"]
i=0
while x>1024:
x/=1024
i+=1
if x>=100: x=round(x)
elif x>=10: x=round(x,1)
else: x=round(x,2)
return "{0} {1}".format(x,exts[i])
|