(self)
| 313 | f.write(json.dumps(exp.to_dict()) + '\n') |
| 314 | |
| 315 | def _poll(self): |
| 316 | while True: |
| 317 | time.sleep(5) |
| 318 | |
| 319 | has_finished = False |
| 320 | for exp in self.exps: |
| 321 | rt = exp.handler.poll() |
| 322 | if rt is None: |
| 323 | continue |
| 324 | |
| 325 | has_finished = True |
| 326 | if rt == 0: |
| 327 | if not exp.do_eval: |
| 328 | all_metric = self._get_metric(exp) |
| 329 | if all_metric: |
| 330 | exp.record.update(all_metric) |
| 331 | if exp.eval_dataset: |
| 332 | exp.do_eval = True |
| 333 | self.exp_queue.appendleft(exp) |
| 334 | self.write_record(exp) |
| 335 | else: |
| 336 | logger.error(f'Running {exp.name} task, but no result found') |
| 337 | else: |
| 338 | all_metric = self._get_metric(exp) |
| 339 | exp.record['eval_result'] = all_metric |
| 340 | if all_metric: |
| 341 | self.write_record(exp) |
| 342 | else: |
| 343 | logger.error(f'Running {exp.name} eval task, but no eval result found') |
| 344 | logger.info(f'Running {exp.name} finished with return code: {rt}') |
| 345 | |
| 346 | if has_finished: |
| 347 | self.exps = [exp for exp in self.exps if exp.handler.poll() is None] |
| 348 | break |
| 349 | |
| 350 | def begin(self, args: Any): |
| 351 | exps = self.prepare_experiments(args) |
no test coverage detected