Standard data structures
Some of Python's traditional data structure features provide various degrees of thread safety by default. However, in most cases, we will have to define some form of a locking mechanism for controlling access to these data structures in order to guarantee thread safety.
Sets
During my time working with communication between multiple threads in Python, I discovered that one excellent solution to using sets in a thread-safe manner is to actually extend the set class, and to implement my own locking mechanism around the actions that I wish to perform.
Extending the class
If you are used to working in Python then extending the class should be a somewhat simple operation. We define a LockedSet
class object, which inherits from our traditional Python set
class. Within the constructor for this class, we create a lock
object, which we'll use in subsequent functions in order to allow for thread-safe interactions.
Below our constructor, we define the add
, remove
, and contains
functions...