diff options
Diffstat (limited to 'unit_trace/progress.py')
-rw-r--r-- | unit_trace/progress.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/unit_trace/progress.py b/unit_trace/progress.py new file mode 100644 index 0000000..d987ecd --- /dev/null +++ b/unit_trace/progress.py | |||
@@ -0,0 +1,46 @@ | |||
1 | ############################################################################### | ||
2 | # Description | ||
3 | ############################################################################### | ||
4 | |||
5 | # Display progress information: | ||
6 | # - Total number of bytes in trace files | ||
7 | # - Total number of event records in trace files | ||
8 | # - Message for every 1,000 records processed | ||
9 | # - Total records processed | ||
10 | # - Total elapsed time | ||
11 | |||
12 | ############################################################################### | ||
13 | # Imports | ||
14 | ############################################################################### | ||
15 | |||
16 | import time | ||
17 | import sys | ||
18 | import os | ||
19 | |||
20 | ############################################################################### | ||
21 | # Public functions | ||
22 | ############################################################################### | ||
23 | |||
24 | def progress(stream): | ||
25 | |||
26 | start_time = 0 | ||
27 | count = 0 | ||
28 | |||
29 | for record in stream: | ||
30 | if record.record_type=="event": | ||
31 | count += 1 | ||
32 | if (count % 1000) == 0 and count > 0: | ||
33 | sys.stderr.write(("Parsed %d event records\n") % (count)) | ||
34 | if record.record_type=="meta" and record.type_name=="trace_files": | ||
35 | bytes = 0 | ||
36 | for file in record.files: | ||
37 | bytes += int(os.path.getsize(file)) | ||
38 | sys.stderr.write(("Total bytes : %d\n") % (bytes)) | ||
39 | # 192 bits per event record, 8 bits per byte | ||
40 | sys.stderr.write(("Total records: %d\n") % (bytes * 8 / 192)) | ||
41 | start_time = time.time() | ||
42 | yield record | ||
43 | |||
44 | sys.stderr.write(("Total records processed: %d\n") % (count)) | ||
45 | sys.stderr.write(("Time elapsed: %ds\n") % (time.time() - start_time)) | ||
46 | |||