mirror of
https://github.com/clearml/clearml
synced 2025-06-26 18:16:07 +00:00
Add portalocker for inter-process lock
This commit is contained in:
41
trains/utilities/locks/constants.py
Normal file
41
trains/utilities/locks/constants.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""
|
||||
Locking constants
|
||||
|
||||
Lock types:
|
||||
|
||||
- `LOCK_EX` exclusive lock
|
||||
- `LOCK_SH` shared lock
|
||||
|
||||
Lock flags:
|
||||
|
||||
- `LOCK_NB` non-blocking
|
||||
|
||||
Manually unlock, only needed internally
|
||||
|
||||
- `LOCK_UN` unlock
|
||||
"""
|
||||
import os
|
||||
|
||||
# The actual tests will execute the code anyhow so the following code can
|
||||
# safely be ignored from the coverage tests
|
||||
if os.name == 'nt': # pragma: no cover
|
||||
import msvcrt
|
||||
|
||||
LOCK_EX = 0x1 #: exclusive lock
|
||||
LOCK_SH = 0x2 #: shared lock
|
||||
LOCK_NB = 0x4 #: non-blocking
|
||||
LOCK_UN = msvcrt.LK_UNLCK #: unlock
|
||||
|
||||
LOCKFILE_FAIL_IMMEDIATELY = 1
|
||||
LOCKFILE_EXCLUSIVE_LOCK = 2
|
||||
|
||||
elif os.name == 'posix': # pragma: no cover
|
||||
import fcntl
|
||||
|
||||
LOCK_EX = fcntl.LOCK_EX #: exclusive lock
|
||||
LOCK_SH = fcntl.LOCK_SH #: shared lock
|
||||
LOCK_NB = fcntl.LOCK_NB #: non-blocking
|
||||
LOCK_UN = fcntl.LOCK_UN #: unlock
|
||||
|
||||
else: # pragma: no cover
|
||||
raise RuntimeError('PortaLocker only defined for nt and posix platforms')
|
||||
Reference in New Issue
Block a user