diff --git a/qlib/workflow/expm.py b/qlib/workflow/expm.py index cb48d156acf..112cb0a0e0d 100644 --- a/qlib/workflow/expm.py +++ b/qlib/workflow/expm.py @@ -231,9 +231,11 @@ def _get_or_create_exp(self, experiment_id=None, experiment_name=None) -> (objec # NOTE: mlflow doesn't consider the lock for recording multiple runs # So we supported it in the interface wrapper + from urllib.request import url2pathname pr = urlparse(self.uri) if pr.scheme == "file": - with FileLock(Path(os.path.join(pr.netloc, pr.path.lstrip("/"), "filelock"))): # pylint: disable=E0110 + lock_path = Path(url2pathname(pr.path)) / "filelock" + with FileLock(lock_path): return self.create_exp(experiment_name), True # NOTE: for other schemes like http, we double check to avoid create exp conflicts try: