(self, timeout=1)
| 623 | return feature_names |
| 624 | |
| 625 | def _init_writer(self, timeout=1): |
| 626 | if self.num_process > 1: |
| 627 | if self.process_id == 0: |
| 628 | file_path = os.path.join(self.data_dir, f"{self.experiment_id}-{self.num_process}-rdv.lock") |
| 629 | self.rendez_vous_lock = FileLock(file_path) |
| 630 | try: |
| 631 | self.rendez_vous_lock.acquire(timeout=timeout) |
| 632 | except TimeoutError: |
| 633 | raise ValueError( |
| 634 | f"Error in _init_writer: another evalution module instance is already using the local cache file at {file_path}. " |
| 635 | f"Please specify an experiment_id (currently: {self.experiment_id}) to avoid collision " |
| 636 | f"between distributed evaluation module instances." |
| 637 | ) from None |
| 638 | |
| 639 | if self.keep_in_memory: |
| 640 | self.buf_writer = pa.BufferOutputStream() |
| 641 | self.writer = ArrowWriter( |
| 642 | features=self.selected_feature_format, stream=self.buf_writer, writer_batch_size=self.writer_batch_size |
| 643 | ) |
| 644 | else: |
| 645 | self.buf_writer = None |
| 646 | |
| 647 | # Get cache file name and lock it |
| 648 | if self.cache_file_name is None or self.filelock is None: |
| 649 | cache_file_name, filelock = self._create_cache_file() # get ready |
| 650 | self.cache_file_name = cache_file_name |
| 651 | self.filelock = filelock |
| 652 | |
| 653 | self.writer = ArrowWriter( |
| 654 | features=self.selected_feature_format, |
| 655 | path=self.cache_file_name, |
| 656 | writer_batch_size=self.writer_batch_size, |
| 657 | ) |
| 658 | # Setup rendez-vous here if |
| 659 | if self.num_process > 1: |
| 660 | if self.process_id == 0: |
| 661 | self._check_all_processes_locks() # wait for everyone to be ready |
| 662 | self.rendez_vous_lock.release() # let everyone go |
| 663 | else: |
| 664 | self._check_rendez_vous() # wait for master to be ready and to let everyone go |
| 665 | |
| 666 | def _info(self) -> EvaluationModuleInfo: |
| 667 | """Construct the EvaluationModuleInfo object. See `EvaluationModuleInfo` for details. |
no test coverage detected