Module data_preprocess.read_file_cache
Expand source code
#!/usr/bin/env python3
import threading
_cache = {} #: Actual cache stored as global variable
_writeLock = threading.Lock() #: Write lock for access cache
def cacheMakeKey(purpose, path):
"""
Helper function for create a key from the "path" to source and "purpose" of using resource
Args:
purpose(str): arbitrarily string
path(str): arbitrarily string
Returns:
A tuple with strings purpose and path
"""
return purpose, path
def cacheItemThreadSafe(key, value):
"""
Method to cache item in a thread safe manner
Args:
key: key to use store object in the thread safe cache
value: value to use store object in the thread safe cache associated with the key
"""
_writeLock.acquire()
_cache[key] = value
_writeLock.release()
def cacheItemThreadUnsafe(key, value):
"""
Cache item in a not thread safe way. Method should be called carefully with a-priori
knowledge that in that moment there is only a single thread that access it.
Args:
key: key to use store object in the thread safe cache
value: value to use store object in the thread safe cache associated with the key
"""
_cache[key] = value
def cacheGetItem(key):
"""
Obtained cached item.
Args:
key: key to use store object in the thread safe cache
Returns:
value to use store object in the thread safe cache associated with the key
"""
return _cache.get(key)
def cacheHasItem(key):
"""
Check that caches has key
Args:
key: key to use store object in the thread safe cache
Returns:
Status that item with a specific key is presented in the cache
"""
return key in _cache
def test_cachestorage():
cacheMakeKey("save", "path")
assert cacheMakeKey("save", "path") == cacheMakeKey("save", "path")
assert cacheMakeKey("load", "path") != cacheMakeKey("load", "path2")
assert not cacheHasItem(cacheMakeKey("s", "path"))
cacheItemThreadUnsafe(cacheMakeKey("s", "path"), 123)
assert cacheHasItem(cacheMakeKey("s", "path"))
assert cacheGetItem(cacheMakeKey("s", "path")) == 123
cacheItemThreadSafe(cacheMakeKey("l", "path"), 1234)
assert cacheHasItem(cacheMakeKey("l", "path"))
assert cacheGetItem(cacheMakeKey("l", "path")) == 1234
Functions
def cacheGetItem(key)
-
Obtained cached item.
Args
key
- key to use store object in the thread safe cache
Returns
value to use store object in the thread safe cache associated with the key
Expand source code
def cacheGetItem(key): """ Obtained cached item. Args: key: key to use store object in the thread safe cache Returns: value to use store object in the thread safe cache associated with the key """ return _cache.get(key)
def cacheHasItem(key)
-
Check that caches has key
Args
key
- key to use store object in the thread safe cache
Returns
Status that item with a specific key is presented in the cache
Expand source code
def cacheHasItem(key): """ Check that caches has key Args: key: key to use store object in the thread safe cache Returns: Status that item with a specific key is presented in the cache """ return key in _cache
def cacheItemThreadSafe(key, value)
-
Method to cache item in a thread safe manner
Args
key
- key to use store object in the thread safe cache
value
- value to use store object in the thread safe cache associated with the key
Expand source code
def cacheItemThreadSafe(key, value): """ Method to cache item in a thread safe manner Args: key: key to use store object in the thread safe cache value: value to use store object in the thread safe cache associated with the key """ _writeLock.acquire() _cache[key] = value _writeLock.release()
def cacheItemThreadUnsafe(key, value)
-
Cache item in a not thread safe way. Method should be called carefully with a-priori knowledge that in that moment there is only a single thread that access it.
Args
key
- key to use store object in the thread safe cache
value
- value to use store object in the thread safe cache associated with the key
Expand source code
def cacheItemThreadUnsafe(key, value): """ Cache item in a not thread safe way. Method should be called carefully with a-priori knowledge that in that moment there is only a single thread that access it. Args: key: key to use store object in the thread safe cache value: value to use store object in the thread safe cache associated with the key """ _cache[key] = value
def cacheMakeKey(purpose, path)
-
Helper function for create a key from the "path" to source and "purpose" of using resource
Args
purpose(str): arbitrarily string path(str): arbitrarily string
Returns
A tuple with strings purpose and path
Expand source code
def cacheMakeKey(purpose, path): """ Helper function for create a key from the "path" to source and "purpose" of using resource Args: purpose(str): arbitrarily string path(str): arbitrarily string Returns: A tuple with strings purpose and path """ return purpose, path
def test_cachestorage()
-
Expand source code
def test_cachestorage(): cacheMakeKey("save", "path") assert cacheMakeKey("save", "path") == cacheMakeKey("save", "path") assert cacheMakeKey("load", "path") != cacheMakeKey("load", "path2") assert not cacheHasItem(cacheMakeKey("s", "path")) cacheItemThreadUnsafe(cacheMakeKey("s", "path"), 123) assert cacheHasItem(cacheMakeKey("s", "path")) assert cacheGetItem(cacheMakeKey("s", "path")) == 123 cacheItemThreadSafe(cacheMakeKey("l", "path"), 1234) assert cacheHasItem(cacheMakeKey("l", "path")) assert cacheGetItem(cacheMakeKey("l", "path")) == 1234