暂停进程?

发布于 2024-08-31 14:46:33 字数 95 浏览 4 评论 0原文

有没有办法暂停一个进程(从可执行文件运行),以便它在暂停时停止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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦情居士 2024-09-07 14:46:33

通过使用 psutil ( https://github.com/giampaolo/psutil ):

>>> import psutil
>>> somepid = 1023
>>> p = psutil.Process(somepid)
>>> p.suspend()
>>> p.resume()

By using psutil ( https://github.com/giampaolo/psutil ):

>>> import psutil
>>> somepid = 1023
>>> p = psutil.Process(somepid)
>>> p.suspend()
>>> p.resume()
你爱我像她 2024-09-07 14:46:33

您正在考虑 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()

想念有你 2024-09-07 14:46:33

我只是用 python 中的信号实现了这一点,如下所示:

def mysignalhandler(sig, frame):
  print "Got " + str(sig)
  if sig == signal.SIGUSR1:
    do_something()

signal.signal(signal.SIGUSR1, mysignalhandler)

signal.pause()

这将在最后一行暂停,并在收到信号 USR1 时调用 do_something() ,例如通过命令

kill -USR1 <pid>

但这仅适用于 UNIX。

I just implemented this with signals in python something like this:

def mysignalhandler(sig, frame):
  print "Got " + str(sig)
  if sig == signal.SIGUSR1:
    do_something()

signal.signal(signal.SIGUSR1, mysignalhandler)

signal.pause()

This will pause at the last line and call do_something() when it receives the signal USR1, for example through a

kill -USR1 <pid>

command.

This will only work in UNIX though.

女中豪杰 2024-09-07 14:46:33

在 Python 中有一种(几乎)原生的方法可以做到这一点,而且非常简单:

import time
time.sleep(5)

在此代码段中,5秒数你想暂停你的程序。

There is a (almost) native way of doing this in Python, and it's quite simple :

import time
time.sleep(5)

In this snippet, 5 is the number of seconds you want to pause your program.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文