A lightweight Python library for monitoring data changes and recording them to lists.
- Monitor multiple data sources simultaneously
- Record data changes over time
- Thread-safe operations
- Simple and intuitive API
- Lightweight with zero dependencies
pip install datawatcherfrom datawatcher import DataWatcher
import time
# Create a watcher instance
watcher = DataWatcher()
# Define a variable to monitor
counter = 0
# Register the variable for monitoring
watcher.watch(lambda: counter, "counter")
# Start monitoring (samples every 1 second by default)
watcher.start()
# Modify the variable
for i in range(10):
counter += 1
time.sleep(1.1)
# Stop monitoring
watcher.stop()
# Access recorded data
print(watcher["counter"]) # Print the recorded values
print(watcher.value_list("counter")) # Alternative way to get values
print(watcher.time_list()) # Get timestampsMonitor CPU and memory usage over time:
from datawatcher import DataWatcher
import psutil # pip install psutil
import time
# Create watcher instance
watcher = DataWatcher()
# Register system metrics for monitoring
watcher.watch(lambda: psutil.cpu_percent(), "cpu_usage", callback=lambda x: print(x))
watcher.watch(lambda: psutil.virtual_memory().percent, "memory_usage")
# Start monitoring every 1 seconds
watcher.start(interval=1.0)
# Let it run for 10 seconds
print("Monitoring system resources for 10 seconds...")
time.sleep(10)
# Stop monitoring
watcher.stop()
# Display results
print("\n=== System Monitoring Results ===")
print(f"CPU Usage: {watcher['cpu_usage']}")
print(f"Memory Usage: {watcher['memory_usage']}")
print(f"Timestamps: {watcher.time_list()}")Main class for monitoring data changes.
watch(func: Callable[[], Any], key: str, callback: Optional[Callable[[Any], Any]] = None)- Register a function to monitorunwatch(key: str)- Remove a monitored functionclear()- Clear all monitored functions and historystart(interval: float = 1.0)- Start monitoring with specified intervalstop()- Stop monitoringtime_list() -> List[float]- Get timestamp listvalue_list(key: str) -> List[Any]- Get recorded values for a key__getitem__(key: str) -> List[Any]- Access values using bracket notation
MIT License