Désolé pour le titre égorgé. Je n'avais pas assez d'espace pour poser la question suivante : supposons que vous exécutiez un programme python et que vous forkiez le processus à l'aide de os.fork(). Lorsque vous divisez le processus, il n'est pas très facile de déterminer quand toutes les fourches sont terminées. Je dois être en mesure de transmettre à l'ordinateur que tous les forks sont terminés car je dois éteindre l'ordinateur avec sudo shutdown -h now. C'est parce que j'utiliserai gcloud qui coûte 5 $ de l'heure. Si le processus se termine pendant que je dors, je ne veux pas gaspiller 35 $.

J'ai essayé d'utiliser une variable globale où, après chaque fork, python écrivait dans un dictionnaire que ce fork était en fait terminé. Même si la variable était globale, je ne pouvais toujours pas obtenir que les valeurs de cette variable soient les mêmes pour chaque fourche. Je pense donc que l'utilisation de variables globales est exclue. Mon travail actuel auquel je pense maintenant est de lire périodiquement la sortie de la commande top dans le terminal. Une fois qu'un fork est terminé, le processus doit se terminer et ne plus apparaître dans la commande supérieure. Donc, une fois qu'il n'y a qu'un seul processus python en cours d'exécution, cela devrait signifier que tous les forks sont terminés. Cela devrait prendre environ 30 minutes pour comprendre comment faire cela, donc je préfère ne pas utiliser cette méthode si quelqu'un sait déjà quelque chose de plus facile.

Je dois également noter que cela se fera à l'aide d'une instance virtuelle Google gcloud. Donc, si gcloud a déjà quelque chose de configuré où il peut déterminer si un processus de fork est terminé, veuillez me le faire savoir.

0
logic1976 4 févr. 2020 à 07:41

1 réponse

Meilleure réponse