Feature: Display estimated remaining time in progress status
Browse files
app.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
import numpy as np
|
| 2 |
import matplotlib.pyplot as plt
|
| 3 |
import gradio as gr
|
|
|
|
| 4 |
|
| 5 |
def run_simulation(
|
| 6 |
initial_investment: float,
|
|
@@ -22,6 +23,7 @@ def run_simulation(
|
|
| 22 |
):
|
| 23 |
swr_test_step = (max_swr_test - min_swr_test) / num_swr_intervals if num_swr_intervals > 0 else 0.1 # Calculate step
|
| 24 |
progress(0, desc="Starting simulation...")
|
|
|
|
| 25 |
# --- Core Parameters ---
|
| 26 |
initial_investment = float(initial_investment)
|
| 27 |
num_years = int(num_years)
|
|
@@ -55,8 +57,21 @@ def run_simulation(
|
|
| 55 |
all_results = []
|
| 56 |
portfolio_paths_for_plotting = {}
|
| 57 |
|
|
|
|
| 58 |
for idx, swr in enumerate(withdrawal_rates_to_test):
|
| 59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
success_count = 0
|
| 61 |
current_swr_paths = []
|
| 62 |
|
|
|
|
| 1 |
import numpy as np
|
| 2 |
import matplotlib.pyplot as plt
|
| 3 |
import gradio as gr
|
| 4 |
+
import time
|
| 5 |
|
| 6 |
def run_simulation(
|
| 7 |
initial_investment: float,
|
|
|
|
| 23 |
):
|
| 24 |
swr_test_step = (max_swr_test - min_swr_test) / num_swr_intervals if num_swr_intervals > 0 else 0.1 # Calculate step
|
| 25 |
progress(0, desc="Starting simulation...")
|
| 26 |
+
start_time = time.time()
|
| 27 |
# --- Core Parameters ---
|
| 28 |
initial_investment = float(initial_investment)
|
| 29 |
num_years = int(num_years)
|
|
|
|
| 57 |
all_results = []
|
| 58 |
portfolio_paths_for_plotting = {}
|
| 59 |
|
| 60 |
+
total_swr_tests = len(withdrawal_rates_to_test)
|
| 61 |
for idx, swr in enumerate(withdrawal_rates_to_test):
|
| 62 |
+
elapsed_time = time.time() - start_time
|
| 63 |
+
progress_ratio = (idx + 1) / total_swr_tests
|
| 64 |
+
|
| 65 |
+
if progress_ratio > 0:
|
| 66 |
+
estimated_total_time = elapsed_time / progress_ratio
|
| 67 |
+
estimated_remaining_time = estimated_total_time - elapsed_time
|
| 68 |
+
remaining_minutes = estimated_remaining_time / 60
|
| 69 |
+
progress_desc = f"Simulating SWR: {swr*100:.1f}% (Est. remaining: {remaining_minutes:.1f} min)"
|
| 70 |
+
else:
|
| 71 |
+
progress_desc = f"Simulating SWR: {swr*100:.1f}%"
|
| 72 |
+
|
| 73 |
+
progress((idx + 1) / total_swr_tests, desc=progress_desc)
|
| 74 |
+
|
| 75 |
success_count = 0
|
| 76 |
current_swr_paths = []
|
| 77 |
|