12
votes

Faire une pause d'un processus?

Y a-t-il un moyen de mettre en pause un processus (à partir d'un exécutable) de sorte qu'il arrête la charge de la CPU pendant sa pause et attend jusqu'à ce qu'il soit non utilisé pour son travail? Peut-être en python ou d'une manière ou d'une autre accessible par Python.


2 commentaires

Voulez-vous dire un processus de fil ou d'exécution?


Je serais enclin à réduire la priorité des processus plutôt que de «faire une pause». De cette façon, d'autres processus vont d'abord


4 Réponses :


5
votes

Vous pensez à SigtStP - Le même signal qui se produit lorsque vous appuyez sur Ctrl-Z . Cela suspend le processus jusqu'à ce qu'il devienne Sigcont .

Bien sûr, certains programmes peuvent simplement attraper et ignorer ce signal. Cela dépend donc de l'exécutable. Toutefois, si vous pouvez la suspendre et le reprendre manuellement, vous pouvez également le faire d'un programme Python. Utilisez os.kill ()


2 commentaires

Et comment puis-je l'insupporter afin qu'il continue de fonctionner d'où il était avant?


SIGSTOP ne peut pas être bloqué et serait légèrement plus précis dans ce contexte, ne provenant pas d'un TTY. en.wikipedia.org/wiki/sigstop



17
votes

En utilisant psutil ( https://github.com/giampaolo/psutil ): Xxx


0 commentaires

0
votes

Il y a un moyen (presque) natif de faire cela en python, et c'est assez simple: xxx

dans cet extrait, 5 est le nombre de secondes vous souhaitez mettre en pause votre programme.


1 commentaires

Cela ne répond pas à la question; qui est à propos de la pause un autre processus .



2
votes

Je viens de la mettre en œuvre avec des signaux dans Python quelque chose comme ceci: xxx

Ceci pause à la dernière ligne et appelez do_something () quand il reçoit le signal USR1, par exemple à travers une commande xxx

Cela fonctionnera cependant à UNIX cependant.


0 commentaires