liaoch commited on
Commit
dc5a308
·
1 Parent(s): 7c75048

Feature: Display estimated remaining time in progress status

Browse files
Files changed (1) hide show
  1. app.py +16 -1
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
- progress((idx + 1) / len(withdrawal_rates_to_test), desc=f"Simulating SWR: {swr*100:.1f}%")
 
 
 
 
 
 
 
 
 
 
 
 
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