diff --git a/aioredlock/algorithm.py b/aioredlock/algorithm.py
index bf192ab..51707b7 100644
--- a/aioredlock/algorithm.py
+++ b/aioredlock/algorithm.py
@@ -238,3 +238,18 @@ class Aioredlock:
         self._watchdogs.clear()
 
         await self.redis.clear_connections()
+
+    async def get_active_locks(self):
+        """
+        Return all stored locks that are valid.
+
+        .. note::
+            This function is only really useful in learning if there are no
+            active locks. It is possible that by the time the a lock is
+            returned from this function that it is no longer active.
+        """
+        ret = []
+        for lock in self._locks.values():
+            if lock.valid is True and await lock.is_locked():
+                ret.append(lock)
+        return ret
diff --git a/aioredlock/lock.py b/aioredlock/lock.py
index a44b84c..58f5b09 100644
--- a/aioredlock/lock.py
+++ b/aioredlock/lock.py
@@ -21,3 +21,6 @@ class Lock:
 
     async def release(self):
         await self.lock_manager.unlock(self)
+
+    async def is_locked(self):
+        return await self.lock_manager.is_locked(self)

diff --git a/tests/ut/conftest.py b/tests/ut/conftest.py
index 7acbe39..7004ad1 100644
--- a/tests/ut/conftest.py
+++ b/tests/ut/conftest.py
@@ -12,8 +12,19 @@ async def dummy_sleep(seconds):
 
 
 @pytest.fixture
-def locked_lock():
-    return Lock(None, "resource_name", 1, -1, True)
+def locked_lock(lock_manager_redis_patched):
+    lock_manager, _ = lock_manager_redis_patched
+    lock = Lock(lock_manager, "resource_name", 1, -1, True)
+    lock_manager._locks[lock.resource] = lock
+    return lock
+
+
+@pytest.fixture
+def unlocked_lock(lock_manager_redis_patched):
+    lock_manager, _ = lock_manager_redis_patched
+    lock = Lock(lock_manager, "other_resource_name", 1, -1, False)
+    lock_manager._locks[lock.resource] = lock
+    return lock
 
 
 @pytest.fixture
diff --git a/tests/ut/test_algorithm.py b/tests/ut/test_algorithm.py
index f4ef3ed..e2655c0 100644
--- a/tests/ut/test_algorithm.py
+++ b/tests/ut/test_algorithm.py
@@ -344,3 +344,13 @@ class TestAioredlock:
 
             await lock_manager.unlock(lock)
             assert lock.valid is False
+
+    @pytest.mark.asyncio
+    async def test_get_active_locks(self, lock_manager_redis_patched, locked_lock, unlocked_lock):
+        lock_manager, redis = lock_manager_redis_patched
+        redis.is_locked.return_value = True
+
+        locks = await lock_manager.get_active_locks()
+
+        assert locked_lock in locks
+        assert unlocked_lock not in locks

A function to return number of active locks
Would be a nice to have a feature to do that.
tests/ut/test_algorithm.py::TestAioredlock::test_get_active_locks
tests/ut/test_algorithm.py::test_validator[_validate_retry_count-Retry tests/ut/test_algorithm.py::test_validator[_validate_retry_delay-Retry tests/ut/test_algorithm.py::test_validator[_validate_internal_lock_timeout-Internal tests/ut/test_algorithm.py::TestAioredlock::test_default_initialization tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_params tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[-1-ValueError-retry_count] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[-1-ValueError-retry_delay_min] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[-1-ValueError-retry_delay_max] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[-1-ValueError-internal_lock_timeout] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[0-ValueError-retry_count] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[0-ValueError-retry_delay_min] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[0-ValueError-retry_delay_max] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[0-ValueError-internal_lock_timeout] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[string-ValueError-retry_count] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[string-ValueError-retry_delay_min] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[string-ValueError-retry_delay_max] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[string-ValueError-internal_lock_timeout] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[None-TypeError-retry_count] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[None-TypeError-retry_delay_min] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[None-TypeError-retry_delay_max] tests/ut/test_algorithm.py::TestAioredlock::test_initialization_with_invalid_params[None-TypeError-internal_lock_timeout] tests/ut/test_algorithm.py::TestAioredlock::test_lock tests/ut/test_algorithm.py::TestAioredlock::test_lock_with_invalid_param tests/ut/test_algorithm.py::TestAioredlock::test_lock_one_retry tests/ut/test_algorithm.py::TestAioredlock::test_lock_expire_retries tests/ut/test_algorithm.py::TestAioredlock::test_lock_one_timeout tests/ut/test_algorithm.py::TestAioredlock::test_lock_expire_retries_for_timeouts tests/ut/test_algorithm.py::TestAioredlock::test_cancel_lock_ tests/ut/test_algorithm.py::TestAioredlock::test_extend_lock tests/ut/test_algorithm.py::TestAioredlock::test_extend_with_invalid_param tests/ut/test_algorithm.py::TestAioredlock::test_extend_lock_error tests/ut/test_algorithm.py::TestAioredlock::test_unlock tests/ut/test_algorithm.py::TestAioredlock::test_is_locked[True-True] tests/ut/test_algorithm.py::TestAioredlock::test_is_locked[True-False] tests/ut/test_algorithm.py::TestAioredlock::test_is_locked[False-True] tests/ut/test_algorithm.py::TestAioredlock::test_is_locked[False-False] tests/ut/test_algorithm.py::TestAioredlock::test_is_locked_type_error tests/ut/test_algorithm.py::TestAioredlock::test_context_manager tests/ut/test_algorithm.py::TestAioredlock::test_destroy_lock_manager tests/ut/test_algorithm.py::TestAioredlock::test_auto_extend tests/ut/test_algorithm.py::TestAioredlock::test_auto_extend_with_extend_failed tests/ut/test_algorithm.py::TestAioredlock::test_unlock_with_watchdog_failed