2010-05-10 85 views
8

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

+0

你是指线程还是运行系统进程? – ukanth 2010-05-10 16:11:51

+1

正在运行的系统进程。 – 2010-05-10 16:56:13

+0

我会倾向于降低流程优先级,而不是“暂停”它。那样的话,其他流程将首先进行 – 2010-11-20 00:25:44

回答

4

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

当然,有些程序只能捕捉和忽略这个信号,所以它取决于可执行文件。但是,如果您可以手动暂停和恢复,也可以从python程序执行。使用os.kill()

+0

,我该如何解除它,以便它继续从之前的位置开始工作? – 2010-05-10 16:28:29

+0

发送SIGCONT – 2010-05-10 16:56:14

+7

SIGSTOP无法被阻止,并且在此上下文中稍微更准确一些,而不是来自tty。 http://en.wikipedia.org/wiki/SIGSTOP – msw 2010-05-10 19:23:29

1

有一个(几乎)本地在Python这样的方式,这是相当简单:

import time 
time.sleep(5) 

在这片段,5你想暂停你的程序的次数。

+1

这并不回答这个问题;这是关于暂停*另一个进程。 – bfontaine 2017-07-25 16:30:33

2

我只是在Python的东西与信号来实现这个是这样的:

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

signal.signal(signal.SIGUSR1, mysignalhandler) 

signal.pause() 

这将在最后一行暂停,并呼吁do_something()当它通过

kill -USR1 <pid> 
接收信号USR1,例如

命令。

这只会在UNIX上工作。