zc.lockfile
Basic inter-process locks
What it is and what it does
zc.lockfile is a lightweight library for creating and managing inter-process locks using the filesystem. Rather than locking files themselves, it uses lock files as a coordination mechanism—the actual resource being protected can be any shared state. The library provides a LockFile class that acquires an OS-level lock on a named file; attempting to lock the same file from another process raises LockError. Lock files persist after release and can optionally include process ID and hostname information for debugging in containerized environments.
The package is designed for scenarios where multiple processes need to serialize access to a shared resource without a dedicated lock server. It is commonly used by database implementations (like ZODB file storage) to mediate access to data files. The implementation is portable across Windows and POSIX systems and supports both CPython and PyPy.
Use it for:
- Serialize access to a shared database file from multiple worker processes in a multiprocessing application.
- Prevent concurrent writes to a configuration or state file in a distributed system.
- Coordinate startup or initialization across multiple container instances by using a lock file on a shared volume.
- Implement a simple job-locking mechanism to ensure only one instance of a scheduled task runs at a time.
- Mediate access to a shared resource in a legacy system that predates modern concurrency primitives.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides portable inter-process locks implemented using lock files and OS-level file-locking primitives, allowing multiple processes to coordinate access to shared resources.
Yes, if you need portable file-based inter-process locking without external dependencies. The package is stable, actively maintained, and has no known vulnerabilities. The aging maintenance status (330 days since last release) is not a concern given the mature, narrow scope of the library. The unclear license treatment warrants a quick review if you have strict licensing requirements, but the ZPL-2.1 is OSI-approved and widely used in the Zope ecosystem.
Install
zc-lockfile on PyPI
pip
pip install zc-lockfileuv
uv add zc-lockfilepoetry
poetry add zc-lockfileInstalling zc.lockfile
Before you install
Low friction: pure Python wheel with only setuptools as a runtime dependency. Maintenance status is aging—last release was 330 days ago—but the repository remains active with recent commits and no archived status.
License in practice
Licensed under ZPL-2.1 (Zope Public License), which is OSI-approved but less common than MIT or Apache 2.0. License treatment is marked unclear; review the license terms if proprietary use or redistribution is planned.
Quickstart
import zc.lockfile
lock = zc.lockfile.LockFile('mylock')
try:
# critical section
pass
finally:
lock.close()
Requires Python 3.9 or later; does not support Python 3.7 or 3.8.
Verify before relying
- Whether the ZPL-2.1 license is compatible with your project's licensing constraints
- Performance characteristics under high contention or with many concurrent lock attempts
- Behavior on network filesystems or non-POSIX systems beyond Windows and POSIX
Package facts
| License | ZPL-2.1 (unclear) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — setuptools |
| Maintenance | aging — 330 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,226,469/month — #2,694 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: zc_lockfile-4.0-py3-none-any.whl
Keywords: lock
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
flufl.lockProvides NFS-safe file locking with timeout…
permissive · top 5,000 on PyPI
locketLocket provides file-based locks for…
permissive · top 1,000 on PyPI
pidManages process ID files with stale detection,…
permissive · top 15,000 on PyPI
portalockerPortalocker provides cross-platform file…
permissive · top 1,000 on PyPI
lockfileProvides a platform-independent file locking…
permissive · top 1,000 on PyPI
fastenersProvides cross-platform locks for synchronizing…
permissive · top 5,000 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
pyodide-lockParses, modifies, and writes pyodide-lock.json…
permissive · top 15,000 on PyPI
PyMySQLLockProvides distributed locking primitives backed…
permissive · top 15,000 on PyPI
kazooKazoo provides a higher-level Python client API…
permissive · top 5,000 on PyPI