暂停进程?
有没有办法暂停一个进程(从可执行文件运行),以便它在暂停时停止CPU负载,并等到它取消暂停才能继续工作?可能是在 python 中,或者以某种方式可以通过 python 访问。
Is there a way to pause a process (running from an executable) so that it stops the cpu load while it's paused, and waits till it's unpaused to go on with its work? Possibly in python, or in some way accessible by python.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
通过使用 psutil ( https://github.com/giampaolo/psutil ):
By using psutil ( https://github.com/giampaolo/psutil ):
您正在考虑 SIGTSTP ——与按下
CTRL-Z 时发生的信号相同
。这会暂停进程,直到收到 SIGCONT。当然,有些程序可以捕获并忽略此信号,因此这取决于可执行文件。但是,如果您可以手动暂停和恢复它,那么您也可以通过 python 程序执行此操作。使用os.kill()
you are thinking of SIGTSTP -- the same signal that happens when you push
CTRL-Z
. This suspends the process until it gets SIGCONT.of course, some programs can just catch and ignore this signal, so it depends on the executable. however, if you can suspend and resume it manually, you can do it from a python program, too. use
os.kill()
我只是用 python 中的信号实现了这一点,如下所示:
这将在最后一行暂停,并在收到信号 USR1 时调用 do_something() ,例如通过命令
。
但这仅适用于 UNIX。
I just implemented this with signals in python something like this:
This will pause at the last line and call
do_something()
when it receives the signal USR1, for example through acommand.
This will only work in UNIX though.
在 Python 中有一种(几乎)原生的方法可以做到这一点,而且非常简单:
在此代码段中,
5
是秒数你想暂停你的程序。There is a (almost) native way of doing this in Python, and it's quite simple :
In this snippet,
5
is the number of seconds you want to pause your program.