Demande d'arrêt de l'entraînement : annulation dans la base, fin de stdin ou signal.
Plus de détails...
|
| | __init__ (self, store=None, job_id=None, watch_stdin=False, poll_s=CANCEL_POLL_S, attempts=None) |
| | Prépare la surveillance (sans installer les signaux : voir install()).
|
|
None | install (self) |
| | Installe les gestionnaires de signaux (sans effet hors du fil principal).
|
|
None | restore (self) |
| | Restaure les gestionnaires de signaux d'origine.
|
| bool | cancel_in_db (self) |
| | Lit le drapeau d'annulation de la base, sans limite de fréquence.
|
|
bool | __call__ (self) |
| | Vrai si un arrêt est demandé (la base est lue au plus une fois toutes les poll_s secondes).
|
|
|
| attempts = attempts |
| | Valeur de attempts au démarrage, ou None (pas de contrôle de reprise).
|
|
| store |
| | Base et job surveillés.
|
|
| job_id = store, job_id |
| | Base et job surveillés.
|
|
| poll_s = poll_s |
| | Période minimale entre deux lectures de la base.
|
|
str | reason = None |
| | Cause de l'arrêt : "cancel", "stdin", "signal", ou None tant qu'aucun arrêt n'est demandé.
|
|
|
None | _watch_stdin (self) |
| | Lit stdin octet par octet (descripteur 0), sans exploiter les données, jusqu'à sa fin ou une erreur.
|
|
None | _on_signal (self, signum, frame) |
| | Gestionnaire de SIGINT, SIGTERM et SIGBREAK : demande un arrêt propre.
|
| None | _taken_over (self, job) |
| | Arrête le processus sans sauvegarder si le job a été repris par un autre processus.
|
| bool | _poll (self) |
| | Lit le job dans la base (une seule lecture) : contrôle de reprise, puis drapeau d'annulation.
|
|
|
| _last_poll = None |
| | Instant (time.monotonic) de la dernière lecture de la base.
|
|
dict | _previous = {} |
| | Gestionnaires de signaux remplacés, pour les restaurer.
|
Demande d'arrêt de l'entraînement : annulation dans la base, fin de stdin ou signal.
L'instance est appelable sans argument et sert de should_stop à train() : elle ne lit que des drapeaux en mémoire, sauf la lecture de la base, faite au plus toutes les poll_s secondes.
◆ __init__()
| aidge_in_space.train.StopWatcher.__init__ |
( |
| self, |
|
|
| store = None, |
|
|
| job_id = None, |
|
|
| watch_stdin = False, |
|
|
| poll_s = CANCEL_POLL_S, |
|
|
| attempts = None ) |
Prépare la surveillance (sans installer les signaux : voir install()).
- Paramètres
-
| store | JobStore pour lire cancel_requested, ou None. |
| job_id | Numéro du job surveillé. |
| watch_stdin | Lance un thread démon qui détecte la fin de stdin. |
| poll_s | Période minimale des lectures de la base. |
| attempts | Valeur de attempts du job lue au démarrage ; si elle change dans la base (ou si le job n'est plus running), un autre processus a repris le job : voir _taken_over(). |
◆ _poll()
| bool aidge_in_space.train.StopWatcher._poll |
( |
| self | ) |
|
|
protected |
Lit le job dans la base (une seule lecture) : contrôle de reprise, puis drapeau d'annulation.
- Renvoie
- Vrai si l'annulation est demandée ; faux en cas d'erreur SQLite (avertissement).
◆ _taken_over()
| None aidge_in_space.train.StopWatcher._taken_over |
( |
| self, |
|
|
| job ) |
|
protected |
Arrête le processus sans sauvegarder si le job a été repris par un autre processus.
Sans effet tant que le job est running avec la même valeur de attempts. Sinon : message dans le journal puis os._exit(EXIT_STOPPED), sans sauvegarde, pour ne pas écraser le checkpoint de l'autre processus.
- Paramètres
-
| job | Job lu dans la base, ou None s'il a disparu. |
◆ cancel_in_db()
| bool aidge_in_space.train.StopWatcher.cancel_in_db |
( |
| self | ) |
|
Lit le drapeau d'annulation de la base, sans limite de fréquence.
- Renvoie
- Vrai si l'annulation est demandée ; faux sans base ou en cas d'erreur SQLite (avertissement).
La documentation de cette classe a été générée à partir du fichier suivant :