From 2b466db59b6bdbe012889ec8d7f0218c9b8f40a3 Mon Sep 17 00:00:00 2001 From: Michael Kuron <m.kuron@gmx.de> Date: Thu, 29 Apr 2021 09:28:57 +0200 Subject: [PATCH] atomically write cache status file --- pystencils/cpu/cpujit.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pystencils/cpu/cpujit.py b/pystencils/cpu/cpujit.py index 4da43010a..dfb33e74b 100644 --- a/pystencils/cpu/cpujit.py +++ b/pystencils/cpu/cpujit.py @@ -52,7 +52,7 @@ import subprocess import textwrap from collections import OrderedDict from sysconfig import get_paths -from tempfile import TemporaryDirectory +from tempfile import TemporaryDirectory, NamedTemporaryFile import numpy as np from appdirs import user_cache_dir, user_config_dir @@ -221,7 +221,9 @@ def read_config(): shutil.rmtree(config['cache']['object_cache'], ignore_errors=True) create_folder(config['cache']['object_cache'], False) - json.dump(config['compiler'], open(cache_status_file, 'w'), indent=4) + with NamedTemporaryFile('w', dir=os.path.dirname(cache_status_file), delete=False) as f: + json.dump(config['compiler'], f, indent=4) + os.replace(f.name, cache_status_file) if config['compiler']['os'] == 'windows': from pystencils.cpu.msvc_detection import get_environment -- GitLab