有没有办法暂停一个进程(从可执行文件运行),以便在暂停时停止cpu加载,并等待它被取消暂停以继续其工作?可能是在python中,或者以某种方式可以通过python访问。
答案 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
是您要暂停程序的秒的数量。