mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-11-22 16:26:28 -05:00
29 lines
628 B
Markdown
29 lines
628 B
Markdown
|
---
|
||
|
title: "Quick Python: Seamless Variable Locks"
|
||
|
date: 2020-05-06T23:01:39-04:00
|
||
|
draft: false
|
||
|
tags: ["python", "concurrency"]
|
||
|
---
|
||
|
|
||
|
Combining Python's [Getters and Setters](https://brandonrozek.com/blog/pygetset/) with locks can give us seamless thread-safe variable access.
|
||
|
|
||
|
```python
|
||
|
from threading import Lock
|
||
|
class Person:
|
||
|
def __init__(self):
|
||
|
self._age = 0
|
||
|
self.age_lock = Lock()
|
||
|
@property
|
||
|
def age(self):
|
||
|
a = None
|
||
|
with self.age_lock:
|
||
|
a = self._age
|
||
|
return a
|
||
|
|
||
|
@age.setter
|
||
|
def age(self, a):
|
||
|
with self.age_lock:
|
||
|
self._age = a
|
||
|
```
|
||
|
|