def _update_process_stats(self):
good_status = ["<STR_LIT>", "<STR_LIT>"]<EOL>for process, vals in self.trace_info.items():<EOL><INDENT>vals = self._update_tag_status(process, vals)<EOL>self._update_process_resources(process, vals)<EOL>self.process_stats[process] = {}<EOL>inst = self.process_stats[process]<EOL>inst["<STR_LIT>"] = "<STR_LIT:{}>".format(<EOL>len([x for x in vals if x["<STR_LIT:status>"] in good_status]))<EOL>try:<EOL><INDENT>time_array = [self._hms(x["<STR_LIT>"]) for x in vals]<EOL>mean_time = round(sum(time_array) / len(time_array), <NUM_LIT:1>)<EOL>mean_time_str = strftime('<STR_LIT>', gmtime(mean_time))<EOL>inst["<STR_LIT>"] = mean_time_str<EOL><DEDENT>except KeyError:<EOL><INDENT>inst["<STR_LIT>"] = "<STR_LIT:->"<EOL><DEDENT>try:<EOL><INDENT>cpu_hours = [self._cpu_load_parser(<EOL>x["<STR_LIT>"], x["<STR_LIT>"], x["<STR_LIT>"]) for x in vals]<EOL>inst["<STR_LIT>"] = round(sum(cpu_hours), <NUM_LIT:2>)<EOL><DEDENT>except KeyError:<EOL><INDENT>inst["<STR_LIT>"] = "<STR_LIT:->"<EOL><DEDENT>inst["<STR_LIT>"], inst["<STR_LIT>"] =self._assess_resource_warnings(process, vals)<EOL>try:<EOL><INDENT>rss_values = [self._size_coverter(x["<STR_LIT>"]) for x in vals<EOL>if x["<STR_LIT>"] != "<STR_LIT:->"]<EOL>if rss_values:<EOL><INDENT>max_rss = round(max(rss_values))<EOL>rss_str = self._size_compress(max_rss)<EOL><DEDENT>else:<EOL><INDENT>rss_str = "<STR_LIT:->"<EOL><DEDENT>inst["<STR_LIT>"] = rss_str<EOL><DEDENT>except KeyError:<EOL><INDENT>inst["<STR_LIT>"] = "<STR_LIT:->"<EOL><DEDENT>try:<EOL><INDENT>rchar_values = [self._size_coverter(x["<STR_LIT>"]) for x in vals<EOL>if x["<STR_LIT>"] != "<STR_LIT:->"]<EOL>if rchar_values:<EOL><INDENT>avg_rchar = round(sum(rchar_values) / len(rchar_values))<EOL>rchar_str = self._size_compress(avg_rchar)<EOL><DEDENT>else:<EOL><INDENT>rchar_str = "<STR_LIT:->"<EOL><DEDENT><DEDENT>except KeyError:<EOL><INDENT>rchar_str = "<STR_LIT:->"<EOL><DEDENT>inst["<STR_LIT>"] = rchar_str<EOL>try:<EOL><INDENT>wchar_values = [self._size_coverter(x["<STR_LIT>"]) for x in vals<EOL>if x["<STR_LIT>"] != "<STR_LIT:->"]<EOL>if wchar_values:<EOL><INDENT>avg_wchar = round(sum(wchar_values) / len(wchar_values))<EOL>wchar_str = self._size_compress(avg_wchar)<EOL><DEDENT>else:<EOL><INDENT>wchar_str = "<STR_LIT:->"<EOL><DEDENT><DEDENT>except KeyError:<EOL><INDENT>wchar_str = "<STR_LIT:->"<EOL><DEDENT>inst["<STR_LIT>"] = wchar_str<EOL><DEDENT>
Updates the process stats with the information from the processes

        This method is called at the end of each static parsing of the nextflow
        trace file. It re-populates the :attr:`process_stats` dictionary
        with the new stat metrics.