def _get_subcounters(self, elapsed):
fields = {}<EOL>subcounters = []<EOL>for num, subcounter in enumerate(self._subcounters, <NUM_LIT:1>):<EOL><INDENT>if self.total:<EOL><INDENT>subPercentage = subcounter.count / float(self.total)<EOL><DEDENT>else:<EOL><INDENT>subPercentage = <NUM_LIT:0.0><EOL><DEDENT>subcounters.append((subcounter, subPercentage))<EOL>fields['<STR_LIT>'.format(num)] = subPercentage * <NUM_LIT:100><EOL>fields['<STR_LIT>'.format(num)] = subcounter.count<EOL>if subcounter.all_fields:<EOL><INDENT>interations = abs(subcounter.count - subcounter.start_count)<EOL>if elapsed:<EOL><INDENT>rate = fields['<STR_LIT>'.format(num)] = interations / float(elapsed)<EOL><DEDENT>else:<EOL><INDENT>rate = fields['<STR_LIT>'.format(num)] = <NUM_LIT:0.0><EOL><DEDENT>if self.total == <NUM_LIT:0>:<EOL><INDENT>fields['<STR_LIT>'.format(num)] = u'<STR_LIT>'<EOL><DEDENT>elif rate:<EOL><INDENT>fields['<STR_LIT>'.format(num)] = _format_time((self.total - interations) / rate)<EOL><DEDENT>else:<EOL><INDENT>fields['<STR_LIT>'.format(num)] = u'<STR_LIT:?>'<EOL><DEDENT><DEDENT><DEDENT>return subcounters, fields<EOL>
Args:
    elapsed(float): Time since started.

Returns:
    :py:class:`tuple`: list of subcounters and dictionary of additional fields

Each subcounter in the list will be in a tuple of (subcounter, percentage)
Fields in the dictionary are addressed in the Format documentation of this class