Worker de la file d'entraînement : exécute les jobs un par un, chacun dans un sous-processus.
Plus de détails...
|
| str | tail (Path path, int n=ERROR_TAIL_LINES) |
| | Dernières lignes d'un fichier texte.
|
| str | final_status (int|None rc, bool cancel_requested, bool stopping, bool killed) |
| | Statut final d'un job à partir de la fin de son sous-processus.
|
| None | _close_stdin (subprocess.Popen proc) |
| | Ferme le stdin de l'enfant (demande d'arrêt propre), sans lever d'erreur.
|
| None | _kill_tree (subprocess.Popen proc, float wait_s=KILL_WAIT_S) |
| | Tue l'enfant et tous ses descendants, sans lever d'erreur.
|
| str | run_job (JobStore store, Job job, list[str] cmd, float poll, threading.Event stop_event, str|None name=None) |
| | Exécute un job dans un sous-processus et fixe son statut final.
|
| None | _finish (JobStore store, int job_id, str status, str|None error) |
| | Écrit le statut final ; réessaie si la base est verrouillée, avertit sans jamais lever.
|
| int | run_worker (JobStore store, float poll=POLL_S, bool once=False, list[str]|None cmd=None, threading.Event|None stop_event=None, str|None name=None) |
| | Boucle du worker : prend et exécute les jobs un par un.
|
| None | _safe (fn) |
| | Exécute fn en affichant (sans propager) toute exception.
|
| int | main (list[str]|None argv=None) |
| | Point d'entrée de la ligne de commande.
|
|
| list | TRAIN_CMD = [sys.executable, "-m", "aidge_in_space.train"] |
| | Commande d'entraînement ; le worker y ajoute –job-id N –db CHEMIN –watch-stdin.
|
|
float | POLL_S = 5.0 |
| | Période de scrutation et des battements de cœur, en secondes.
|
|
float | STALE_AFTER_S = 60.0 |
| | Âge au-delà duquel un job running est orphelin.
|
|
float | STOP_TIMEOUT_S = 60.0 |
| | Délai laissé à l'enfant pour sauvegarder après la fermeture de son stdin, avant l'arrêt forcé de son arbre de processus.
|
|
float | CANCEL_GRACE_S = 60.0 |
| | Délai après lequel le worker ferme lui-même le stdin d'un job dont l'annulation est demandée.
|
|
float | KILL_WAIT_S = 10.0 |
| | Délai maximal d'attente de la fin de l'enfant après son arrêt forcé, en secondes.
|
|
int | ERROR_TAIL_LINES = 20 |
| | Lignes de train.log recopiées dans l'erreur d'un job en échec.
|
|
int | TAIL_BYTES = 64 * 1024 |
| | Octets lus en fin de train.log pour en extraire les dernières lignes.
|
|
float | SLICE_S = 0.25 |
| | Pas maximal (secondes) entre deux vérifications de la fin de l'enfant.
|
|
int | FINISH_RETRIES = 5 |
| | Nombre de tentatives d'écriture du statut final quand la base est inaccessible.
|
|
float | FINISH_RETRY_WAIT_S = 2.0 |
| | Attente (secondes) entre deux tentatives d'écriture du statut final.
|
Worker de la file d'entraînement : exécute les jobs un par un, chacun dans un sous-processus.
Lancement : python -m aidge_in_space.worker [--poll 5] [--once] [--db CHEMIN].
Le worker ne fait jamais d'entraînement lui-même : il lance python -m aidge_in_space.train --job-id N
--db CHEMIN --watch-stdin, redirige sa sortie vers RUNS_DIR/N/train.log, entretient les battements de cœur du job et du worker, puis fixe le statut final à partir du code de retour (voir jobs.EXIT_*). Fermer le stdin de l'enfant lui demande de sauvegarder et de s'arrêter (code 4) ; le système le ferme aussi si le worker disparaît, ce qui évite les processus orphelins.
| None aidge_in_space.worker._kill_tree |
( |
subprocess.Popen | proc, |
|
|
float | wait_s = KILL_WAIT_S ) |
|
protected |
Tue l'enfant et tous ses descendants, sans lever d'erreur.
Sous Windows, le python du venv est un lanceur dont le vrai interpréteur est un second processus : proc.kill() ne tuerait que le lanceur et laisserait l'entraînement orphelin, d'où taskkill /F /T. Sous POSIX, l'enfant est chef de sa propre session (start_new_session) : SIGKILL à son groupe. Repli sur proc.kill() si l'arrêt de l'arbre échoue.
- Paramètres
-
| proc | Sous-processus d'entraînement. |
| wait_s | Délai maximal d'attente de la fin de proc, en secondes. |