diff options
author | Mac Mollison <mollison@cs.unc.edu> | 2010-03-14 00:58:31 -0500 |
---|---|---|
committer | Mac Mollison <mollison@cs.unc.edu> | 2010-03-14 00:58:31 -0500 |
commit | 53752df921cc50450926a57ee11301693504c5c5 (patch) | |
tree | 793ebcfa97e15e7854604a8650229d0935ec4f1e /unit_trace/progress.py | |
parent | 6f2bdc8c3eff8305d3b50e81c874a3e015069459 (diff) |
Added progress submodule to report progress.
This submodule allows us to measure the speed at which
trace files are processed and reports on its progress as
it goes along.
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 | |||