mmnode-blocks-info: add average stats
This commit is contained in:
parent
46bc925a5f
commit
6a761f8ac9
1 changed files with 18 additions and 1 deletions
|
|
@ -94,7 +94,7 @@ class BlocksInfo:
|
|||
]
|
||||
fs_lsqueeze2 = ['interval']
|
||||
|
||||
all_stats = ['range','diff']
|
||||
all_stats = ['avg','range','diff']
|
||||
dfl_stats = ['range','diff']
|
||||
|
||||
fmt_funcs = {
|
||||
|
|
@ -312,10 +312,12 @@ class BlocksInfo:
|
|||
if not self.block_list:
|
||||
await init(0)
|
||||
|
||||
self.res = []
|
||||
for n in range(len(heights)):
|
||||
if self.block_list:
|
||||
await init(n)
|
||||
ret = await self.process_block(heights[n],hashes[n],self.hdrs[n])
|
||||
self.res.append(ret)
|
||||
if not self.opt.stats_only:
|
||||
self.output_block(ret,n)
|
||||
|
||||
|
|
@ -481,6 +483,21 @@ class BlocksInfo:
|
|||
('Est. diff adjust: {}%', 'est_diff_adjust_pct', f'{((600 / bdi) - 1) * 100:+.2f}'),
|
||||
))
|
||||
|
||||
async def create_avg_stats(self):
|
||||
skip = ('block', 'hash', 'date', 'version','miner')
|
||||
fields = self.block_data._fields
|
||||
nblocks = len(self.res)
|
||||
def gen():
|
||||
for field in fields:
|
||||
if field in skip:
|
||||
yield ''
|
||||
else:
|
||||
ret = sum(getattr(block,field) for block in self.res) // nblocks
|
||||
vn = self.fields[field].varname
|
||||
yield self.fmt_funcs[vn](ret) if vn in self.fmt_funcs else ret
|
||||
fs = ''.join(self.gen_fs(fields,fill=skip)).strip()
|
||||
return ( 'averages', ( 'Averages:', fs.format(*gen()) ) )
|
||||
|
||||
def process_stats_pre(self,i):
|
||||
if not (self.opt.stats_only and i == 0):
|
||||
Msg('')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue