From 1d8d74d032697c24977fe026ded7dc74a918625a Mon Sep 17 00:00:00 2001 From: Joel Fernandes Date: Sun, 23 Apr 2017 01:46:28 -0700 Subject: trappy: Split out parsing of trace string into separate function In preparation of introducing event callbacks, split out string parsing into separate function. Signed-off-by: Joel Fernandes --- trappy/base.py | 36 ++++++++++++++++++++---------------- 1 file 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. -- cgit v1.2.3