Wait Till Conditions
The till script allows you to wait until specific conditions are met before proceeding. This is useful for scheduling tasks, resource management, and synchronization.
Usage
python -m mbapy.scripts.till [sub-command] [options]
Or using mbapy-cli:
mbapy-cli till [sub-command] [options]
Available Sub-commands
time - Wait for specified duration
Wait for a specified time duration.
Usage:
mbapy-cli till time <time>
Arguments:
- time: Duration to wait (supports multiple formats)
Supported time formats:
- Pure numbers: 60 (60 seconds)
- With units: 3s, 1m2s, 1h3s, 1h8m3s, 2h30m, 45m, 1h
Examples:
# Wait 60 seconds
mbapy-cli till time 60
# Wait 3 seconds
mbapy-cli till time 3s
# Wait 1 minute and 2 seconds
mbapy-cli till time 1m2s
# Wait 1 hour, 8 minutes and 3 seconds
mbapy-cli till time 1h8m3s
# Wait 2 hours and 30 minutes
mbapy-cli till time 2h30m
start-time - Wait until specified start time
Wait until a specific date and time.
Usage:
mbapy-cli till start-time <time>
Arguments:
- time: Start time in format YYYY-MM-DD HH:MM:SS
Examples:
# Wait until February 5, 2026 at 14:30:00
mbapy-cli till start-time "2026-02-05 14:30:00"
cuda-mem - Wait until GPU memory is available
Wait until specified amount of GPU memory becomes available.
Usage:
mbapy-cli till cuda-mem <memory> [options]
Arguments:
- memory: Required GPU memory in GB
Options:
- --check-interval: Check interval in seconds (default: 30)
- --wait-iter: Wait iterations after condition met (default: 5)
Examples:
# Wait until 8GB GPU memory is available
mbapy-cli till cuda-mem 8
# Wait for 10GB with custom settings
mbapy-cli till cuda-mem 10 --check-interval 60 --wait-iter 10
cuda - Wait until GPU utilization drops
Wait until GPU utilization drops below specified threshold.
Usage:
mbapy-cli till cuda <max-utilization> [options]
Arguments:
- max-utilization: Maximum GPU utilization percentage
Options:
- --check-interval: Check interval in seconds (default: 30)
- --wait-iter: Wait iterations after condition met (default: 5)
Examples:
# Wait until GPU utilization drops below 10%
mbapy-cli till cuda 10
# Wait with custom settings
mbapy-cli till cuda 20 --check-interval 60 --wait-iter 3
process - Wait until process ends
Wait until a specific process (by PID) ends.
Usage:
mbapy-cli till process <pid> [options]
Arguments:
- pid: Process ID to wait for
Options:
- --check-interval: Check interval in seconds (default: 10)
Examples:
# Wait for process 12345 to end
mbapy-cli till process 12345
# Check every 5 seconds
mbapy-cli till process 12345 --check-interval 5
cpu - Wait until CPU utilization drops
Wait until CPU utilization drops below specified threshold.
Usage:
mbapy-cli till cpu <max-utilization> [options]
Arguments:
- max-utilization: Maximum CPU utilization percentage
Options:
- --check-interval: Check interval in seconds (default: 30)
- --wait-iter: Wait iterations after condition met (default: 5)
Examples:
# Wait until CPU utilization drops below 20%
mbapy-cli till cpu 20
# Wait with custom settings
mbapy-cli till cpu 30 --check-interval 60 --wait-iter 3
mem - Wait until system memory is available
Wait until specified amount of system memory becomes available.
Usage:
mbapy-cli till mem <memory> [options]
Arguments:
- memory: Required system memory in GB
Options:
- --check-interval: Check interval in seconds (default: 30)
- --wait-iter: Wait iterations after condition met (default: 5)
Examples:
# Wait until 4GB system memory is available
mbapy-cli till mem 4
# Wait for 8GB with custom settings
mbapy-cli till mem 8 --check-interval 60 --wait-iter 10
file - Wait until file or folder exists
Wait until a specific file or folder appears at the specified path.
Usage:
mbapy-cli till file <path> [options]
Arguments:
- path: Path to file or folder to wait for
Options:
- --check-interval: Check interval in seconds (default: 10)
Examples:
# Wait for file to appear
mbapy-cli till file /path/to/file.txt
# Wait for folder to appear
mbapy-cli till file /path/to/folder
# Check every 5 seconds
mbapy-cli till file /path/to/file.txt --check-interval 5
folder - Wait until folder contains minimum number of files
Wait until a folder contains at least the specified number of files (non-recursive).
Usage:
mbapy-cli till folder <path> <min-count> [options]
Arguments:
- path: Path to folder to check
- min-count: Minimum number of files required
Options:
- --check-interval: Check interval in seconds (default: 10)
Examples:
# Wait until folder has at least 10 files
mbapy-cli till folder /path/to/folder 10
# Wait with custom check interval
mbapy-cli till folder /path/to/folder 5 --check-interval 5
How It Works
Time-based waiting
- Uses
tqdmprogress bar for visual feedback - Supports flexible time format parsing
- Accurate timing with Python's
time.sleep()
Resource monitoring (GPU/CPU/Memory)
- GPU monitoring uses
nvidia-smicommand - CPU and memory monitoring uses
psutillibrary - Real-time progress display with current values
- Configurable check intervals and wait iterations
Process monitoring
- Uses
psutilto check process existence - Configurable check intervals
- Real-time status updates
File system monitoring
- Uses
os.path.exists()for file/folder existence - Non-recursive file counting for folder monitoring
- Configurable check intervals
Common Use Cases
Task scheduling
# Wait until 2 PM to start processing
mbapy-cli till start-time "2026-02-05 14:00:00"
# Then run your task
python process_data.py
Resource management
# Wait for GPU resources before training
mbapy-cli till cuda-mem 8 --wait-iter 10
# Then start training
python train_model.py
Process synchronization
# Wait for data processing to complete
mbapy-cli till process 12345
# Then start analysis
python analyze_results.py
File system monitoring
# Wait for data files to be generated
mbapy-cli till folder /data/output 100
# Then process the files
python batch_process.py
Notes
- All monitoring commands show real-time progress
- GPU monitoring requires NVIDIA GPU with
nvidia-smiinstalled - Process monitoring requires the process to be running
- File system monitoring works with both files and directories
- Time parsing supports flexible unit combinations
- All commands can be interrupted with Ctrl+C
Dependencies
psutil- System and process monitoringtqdm- Progress bar displaynvidia-smi(for GPU monitoring) - NVIDIA system management interface
See Also
- batch_cmd - Batch command execution