This is specific kind of lock, that allows only one operation at the time (read or write) by any number of callers.
WHS Ltd provides collection of pure-python modules.
This is implementation of lock, that allows only one kind of operation be executed at the time (reading or writing). Any number of callers can acquire reading or writing at once, but if someone tries to acquire writing while reading is acquired, it will wait, until all readers that acquired lock release it (and vice versa).
At the moment it works only with threading, but few simple modifications will result in multiprocessing-enabled implementation.
whs.utils.rwlock is a package, but should be used as a module (all code is in __init__.py).