Savoir si le programme lancé par Python est terminé

zannguyen Messages postés 6 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 24 novembre 2009 - 15 sept. 2009 à 15:11
zannguyen Messages postés 6 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 24 novembre 2009 - 22 sept. 2009 à 09:22
Bonjour à tous,
Je fais un petit script avec Python qui permet d'appeler un autre programme à exécuter. Cet appel est réalisé quand on clique sur un bouton. Je fais comme suivant:

os.system('nohup mon_program mon_fichier > nohup.out &')

nohup est en effet pour ne pas apparaître des contenus du programme sur l'écran mais les enregistrer sur le fichier nohup.out.

La durée d'exécution de mon programme est souvant longue (1 jour).

Ma question est: comment faire apparaître un message d'annonce une fois mon programme est terminé? Et éventuellement comment rendre le cursor (souris) en état "attente" quand mon programme est en cours?

Merci pour votre suggestion.

4 réponses

lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
15 sept. 2009 à 23:02
Bonsoir,

1) Une suggestion:

# -*- coding: ISO-8859-15 -*-
#Un exemple sous Windows XP :
# Liste du dossier courant et écriture du résulat dans "Nohup.out"

import os

retcode = os.system("dir > nohup.out")
#retcode = os.system("gloupsss > nohup.out") #Erreur garantie

if retcode > 0 :
print "ERREUR" ,retcode
else:
print "OK Traitement termine", retcode



2)Modification du curseur en sablier:

Tout dépend de l'interface graphique
Avec TkInter la commande est:
zone_perso.configure(cursor = "watch") #Sablier
zone_perso.configure(cursor = "arrow") #Fleche
0
zannguyen Messages postés 6 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 24 novembre 2009
16 sept. 2009 à 17:46
Merci pour votre réponse, j'ai essayé avec Linux Ubuntu et la commande sugérée marche bien dans le cas si j'enlève nohup dans ma commande. C'est à dire, si je fais:
os.system('mon_program mon_fichier')

à la fin du programme, python imprime "OK Traitement termine" sur l'écran.

Cependant, si je lance la commande avec nohup comme précédemment, le message "OK Traitement termine" apparaît tout suite après le lancement, malgré que le programme est toujours en cours d'exécution.

Est-ce que vous avez une idée?
Merci
0
lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
16 sept. 2009 à 22:04
Bonsoir,

Désolé je ne connais pas l'environnement Linux Ubuntu.

J'ai trouvé ça sur le Net:

..Nohup est une commande Unix permettant de lancer un processus qui restera actif même après la déconnexion de l'utilisateur l'ayant initiée. Combiné à l'esperluette qui permet le lancement en arrière-plan, nohup permet donc de créer des processus s'exécutant de manière transparente sans être dépendants de l'utilisateur...

Je comprends ça de la façon suivante:

1)Commande sans "nohup" :
l'interface utilisateur et le processus restent en communication.
En fin de processus le code retour est renvoyé à l'interface utilisateur.

2)Commande avec "nohup" et &
l'interface utilisateur et le processus ne sont plus en communication.
L'interface utilisateur envoie la commande qui déclenche le processus et le code retour est renvoyé dès que la commande est passée.
0
zannguyen Messages postés 6 Date d'inscription jeudi 3 septembre 2009 Statut Membre Dernière intervention 24 novembre 2009
22 sept. 2009 à 09:22
Merci pour l'explication , à bien tôt sans doute
0
Rejoignez-nous