os.register_at_fork ( )
DESCRIPTION.
Indique les fonctions à exécuter à la création d'un processus fils avec la méthode os.fork ( ).
SYNTAXE.
os.register_at_fork ( avant , parent , enfant )
os.register_at_fork ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
avant ⇨ fonction à exécuter avant la création d'un fils [ optionnel ]
parent ⇨ fonction à exécuter après la création d'un fils par le père [ optionnel ]
enfant ⇨ fonction à exécuter après la création d'un fils par le fils [ optionnel ]
REMARQUES.
avant est un attribut nommé before = fonction, où fonction doit être la désignation, le nom, d'une fonction valide : personnalisée, native, importée ou anonyme avec l'instruction lambda. fonction sera appelée et exécutée avant la création du nouveau processus. Si avant est omis, la valeur par défaut de fonction est None.
parent est un attribut nommé after_in_parent = fonction, où fonction doit être la désignation, le nom, d'une fonction valide : personnalisée, native, importée ou anonyme avec l'instruction lambda. fonction sera appelée et exécutée par le processus parent, le père, après la création du nouveau processus enfant. Si parent est omis, la valeur par défaut de fonction est None.
enfant est un attribut nommé after_in_child = fonction, où fonction doit être la désignation, le nom, d'une fonction valide : personnalisée, native, importée ou anonyme avec l'instruction lambda. fonction sera appelée et exécutée par le processus enfant, le fils, après sa création. Si enfant est omis, la valeur par défaut de fonction est None.
La méthode os.register_at_fork ( ) n'est disponible que pour UNIX et la plupart des Linux. Son utilisation sous d'autres OS, tel que Windows de Microsoft, lèvera une exception.
Une fois enregistrées par l'appel de la méthode os.register_at_fork ( ), il ne sera plus possible d'annuler l'exécution de ces méthodes à la création de processus fils par la méthode os.fork ( ). Mais les fonctions passées comme valeurs aux arguments ne seront exécutées que si l'interpréteur Python récupère le controle. Typiquement, un sous processus ne retourne pas dans l'interpréteur Python.
Si plusieurs fonctions sont passées dans avant, elles seront appelées et exécutées dans l'ordre inverse de leur présentation. Si plusieurs fonctions sont passées dans parentenfant, elles seront appelées et exécutées dans l'ordre de leur présentation.
Note : Si le processus enfant est créé depuis des module importés en langage C, les fonctions désignées dans l'appel de la méthode os.register_at_fork ( ) ne seront exécutées sauf si ce script appelle explicitement PyOS_BeforeFork(), PyOS_AfterFork_Parent() et PyOS_AfterFork_Child().
EXEMPLE.
import os
os.register_at_fork (
before = lambda : print ( "A afficher avant la création" ) ,
after_in_parent = lambda : print ( "Le PERE : Mon fils est OK.") ,
after_in_child = lambda : print ( "Le FILS : J'existe." ) )
kfils = os.fork ( )
if kfils > 0 : # si le processus en cours n'a pas retourné 0 c'est le père qui été chargé dans le CPU
print ( "Le PERE : Je patiente ... " )
os.wait ( )
print ( "Le PERE : Je termine ... " )
else : # si le processus en cours a retourné 0 c'est le fils qui été chargé dans le CPU
print ( "Le FILS : C'est à moi." )
print ( "Le FILS : J'ai fini." )
Une fois enregistré, ce script doit être lancé depuis un terminal Linux avec la commande :
python /chemin/monscrip.py (où /chemin/monscrip.py est le nom de votre script avec son chemin).
Pour une meilleur compatibilité, chemin et nom de doivent as comporter d'espace ou de caractères spéciaux.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la LOGITHEQUE de MON PYTHON PAS A PAS
vous trouvez des suggestions de projets simples et classiques pour
ooo
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
ooo
la programmation récréative avec le langage PYTHON 3
avec un exemple de résolution à télécharger pour vous inspirer.