objectif
Synchroniser l’accès à un fichier entre processus via flock (advisory).
code minimal
import os, tempfile, sys
if os.name == "posix":
import fcntl # Unix seulement
with tempfile.NamedTemporaryFile() as f:
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
print(True) # attendu: True
else:
print(True) # plate-forme non Unix
utilisation
import os, tempfile
if os.name == "posix":
import fcntl
with tempfile.NamedTemporaryFile() as f:
fcntl.flock(f, fcntl.LOCK_SH) # lecture partagée
fcntl.flock(f, fcntl.LOCK_UN) # libérer
print(True)
else:
print(True)
variante(s) utile(s)
import os
print(os.name in ("posix","nt"))
notes
- flock est coopératif (advisory) et spécifique Unix.
- Sur Windows, utilisez msvcrt.locking ou un lockfile O_EXCL.