blob: d61be6f82a96582becf2de149b0175ce77e43aa7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
###############################################################################
# Description
###############################################################################
# Compute and produce statistics
###############################################################################
# Public Functions
###############################################################################
def stats(stream):
min_inversion = -1
max_inversion = -1
sum_inversions = 0
num_inversions = 0
for record in stream:
if record.type_name == 'inversion_end':
length = record.job.inversion_end - record.job.inversion_start
if length > 0:
num_inversions += 1
if length > max_inversion:
max_inversion = length
if length < min_inversion or min_inversion == -1:
min_inversion = length
sum_inversions += length
yield record
if num_inversions > 0:
avg_inversion = int(sum_inversions / num_inversions)
else:
avg_inversion = 0
class Obj(): pass
rec = Obj()
rec.record_type = "meta"
rec.type_name = "stats"
rec.num_inversions = num_inversions
rec.min_inversion = min_inversion
rec.max_inversion = max_inversion
rec.avg_inversion = avg_inversion
yield rec
|