aboutsummaryrefslogtreecommitdiff
path: root/trappy/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'trappy/base.py')
-rw-r--r--trappy/base.py36
1 files changed, 20 insertions, 16 deletions
diff --git a/trappy/base.py b/trappy/base.py
index 6b9be4d..14de582 100644
--- a/trappy/base.py
+++ b/trappy/base.py
@@ -171,6 +171,25 @@ class Base(object):
self.cpu_array.append(cpu)
self.data_array.append(data)
+ def generate_data_dict(self, comm, pid, cpu, data_str):
+ data_dict = {"__comm": comm, "__pid": pid, "__cpu": cpu}
+ prev_key = None
+ for field in data_str.split():
+ if "=" not in field:
+ # Concatenation is supported only for "string" values
+ if type(data_dict[prev_key]) is not str:
+ continue
+ data_dict[prev_key] += ' ' + field
+ continue
+ (key, value) = field.split('=', 1)
+ try:
+ value = int(value)
+ except ValueError:
+ pass
+ data_dict[key] = value
+ prev_key = key
+ return data_dict
+
def generate_parsed_data(self):
# Get a rough idea of how much memory we have to play with
@@ -182,22 +201,7 @@ class Base(object):
for (comm, pid, cpu, data_str) in zip(self.comm_array, self.pid_array,
self.cpu_array, self.data_array):
- data_dict = {"__comm": comm, "__pid": pid, "__cpu": cpu}
- prev_key = None
- for field in data_str.split():
- if "=" not in field:
- # Concatenation is supported only for "string" values
- if type(data_dict[prev_key]) is not str:
- continue
- data_dict[prev_key] += ' ' + field
- continue
- (key, value) = field.split('=', 1)
- try:
- value = int(value)
- except ValueError:
- pass
- data_dict[key] = value
- prev_key = key
+ data_dict = self.generate_data_dict(comm, pid, cpu, data_str)
# When running out of memory, Pandas has been observed to segfault
# rather than throwing a proper Python error.