2010-05-10 129 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上工作。