comment redémarrer automatiquement un programme en python


Réponse 1:

Je ne sais pas si un programme est vraiment capable de faire cela. Cela semble plus être un travail pour le système d'exploitation à gérer, et assez simple à cela, "si ce n'est pas en cours d'exécution, démarrez-le.". Vous pourriez demander au programme d'appeler un script dans la partie de gestion des exceptions de l'erreur qui redémarrera le script dans quelques secondes, mais à part cela, je ne crois pas qu'il existe un moyen de démarrer un programme. C'est comme conduire sur la route sans démarrer votre voiture, les voitures sont des morceaux stupides de plastique et de métal jusqu'à ce que vous tourniez la clé pour au moins allumer la radio. Mais pour que cette machine devienne utile, quelque chose doit interagir avec elle et la faire démarrer.


Réponse 2:

Vous pouvez essayer de tout mettre dans la fonction principale et l'exécuter en utilisant

importer numpy comme npdef my_main_function (): np.load ('fichier.csv')si __name __ == '__ main__': essayer: ma_fonction_main () sauf: ma_fonction_main ()

Cela fonctionnera mais voici le problème, ce code est pathétique car il continuera d'essayer de charger à nouveau votre fichier csv jusqu'à ce que la pile d'appels soit pleine et que vous ne puissiez plus rien faire.

Ce serait beaucoup mieux si vous pouviez mentionner ce que vous voulez faire exactement après le redémarrage du code, et pourquoi voulez-vous exactement redémarrer le code?


Réponse 3:

Bonjour,

merci pour l'A2A.

Pourquoi n'utilisez-vous pas simplement une boucle While?

Il est garanti de fonctionner.

Voici le code:

importer numpy comme nperreur = Vraidef my_main_function (): imprimer ("1") np.load ('fichier.npy')pendant l'erreur: essayer: ma_fonction_main () erreur = Faux sauf IOError: erreur = Vraiimprimer ("terminé")

Cela imprimera 1, chaque fois qu'il essaiera de charger un fichier (notez que j'excepte seulement IOError). Si my_main_function () réussit sans erreur, la variable d'erreur sera définie sur False et vous sortez de la boucle while.

Exécuter un autre programme en même temps qui génère réellement "file.npy", par exemple le code suivant réussira à interrompre la boucle while

importer numpy comme npnp.save ('fichier', np.array ([1, 2, 3]))

La sortie du premier programme ressemblera alors à ceci:

111111111111111111fini

Faites-moi savoir si je peux vous aider.

Salutations


Réponse 4:

Je suggérerais d'utiliser pour toujours Vous devez avoir npm installé sur votre machine.

Ensuite, vous installez pour toujours dans le monde entier avec npm install forever -g

Et puis vous pouvez exécuter votre script python comme ça: pour toujours démarrer -c python yourscript.py

Forever redémarrera le script s'il plante.

Tapez les journaux pour toujours pour trouver vos journaux.

Plus d'infos ici :

https://www.npmjs.com/package/forever

Edit: vous devez mettre un shebang (#! / Path / to / python) en haut de votre script


Réponse 5:

Votre code devrait fonctionner si vous supprimez la dernière ligne! (Ie démarrer la fonction principale uniquement dans le wrapper try / except. Pas sur la ligne 14 à l'extérieur de celui-ci)