code: def compute_work_statistics(self):
      
      result = {}
      for v in itervalues(self.work):
        submission_id = v['submission_id']
        if submission_id not in result:
          result[submission_id] = {
              'completed': 0,
              'num_errors': 0,
              'error_messages': set(),
              'eval_times': [],
              'min_eval_time': None,
              'max_eval_time': None,
              'mean_eval_time': None,
              'median_eval_time': None,
          }
        if not v['is_completed']:
          continue
        result[submission_id]['completed'] += 1
        if 'error' in v and v['error']:
          result[submission_id]['num_errors'] += 1
          result[submission_id]['error_messages'].add(v['error'])
        else:
          result[submission_id]['eval_times'].append(float(v['elapsed_time']))
      for v in itervalues(result):
        if v['eval_times']:
          v['min_eval_time'] = np.min(v['eval_times'])
          v['max_eval_time'] = np.max(v['eval_times'])
          v['mean_eval_time'] = np.mean(v['eval_times'])
          v['median_eval_time'] = np.median(v['eval_times'])
      return result
docs: Computes statistics from all work pieces stored in this class.