AnswerDotAI / AnswerDotAI/fastprogress
Is there a way to deal with variable sized iterables?
Personne n'a encore pris cette issue.
- Langage dominant
- Jupyter Notebook
- Étoiles
- 1.1k
- Forks
- 103
- Merge moyen
- 1 min
- PR mergées (30 j)
- 1
Description
The problem is this line:
self.total = len(gen) if total is None else total
That is executed at the beginning. But len(gen) might change throughout the iteration, but progress_bar just assumes it keeps still.
What I really want is to use a timer (so "train for 1 hour" instead of "train for so and so epochs").
import time
class Timer:
def __init__(self, num_seconds):
self.num_seconds = num_seconds
self.i = None
def __len__(self):
if self.i is None: return 1
eps = 1e-7
t = time.time() - self.start
progress = t/num_seconds
return int((num_seconds*self.i)/(progress+eps)) # estimated size. Changes constantly.
def __iter__(self):
self.start = time.time()
self.i, t = 0, 0.0
while t <= self.num_seconds:
t = time.time() - self.start
self.i += 1
yield None
With this class, if you write
for t in Timer(3.0):
# do stuff
it runs for 3 seconds. But it doesn't work with the progress_bar :(
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par localiser l’implémentation de progress_bar et la ligne self.total = len(gen) if total is None else total décrite dans l’issue. Reproduisez ensuite l’exemple de Timer fourni, puis déterminez comment les itérables de taille variable ou l’itération basée sur le temps doivent être représentés ; le travail est considéré comme terminé lorsque la barre de progression peut gérer ce cas d’utilisation sans supposer une longueur fixe.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 40/100