暂停一个过程?

时间:2010-05-10 16:10:54

标签: python process signals

有没有办法暂停一个进程(从可执行文件运行),以便在暂停时停止cpu加载,并等待它被取消暂停以继续其工作?可能是在python中,或者以某种方式可以通过python访问。

4 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:5)

您正在考虑SIGTSTP - 推送CTRL-Z时发生的相同信号。这将暂停该过程,直到获得SIGCONT

当然,有些程序可以捕获并忽略此信号,因此它取决于可执行文件。但是,如果你可以手动暂停和恢复它,你也可以从python程序中执行它。使用os.kill()

答案 2 :(得分:2)

我刚用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。

答案 3 :(得分:0)

在Python中有一种(几乎)原生方式,这很简单:

import time
time.sleep(5)

在此代码段中,5是您要暂停程序的的数量。