Python 暂停进程?

Python 暂停进程?,python,process,signals,Python,Process,Signals,有没有一种方法可以暂停进程(从可执行文件运行),使其在暂停时停止cpu负载,并等待其取消暂停后继续工作?可能是在python中,或者以某种python可以访问的方式。您所想到的——当您按下CTRL-Z时发生的相同信号。这将暂停进程,直到它恢复 当然,有些程序可以捕获并忽略此信号,因此它取决于可执行文件。但是,如果可以手动挂起并恢复它,也可以从python程序中执行。通过使用psutil()使用os.kill(): 在Python中有一种(几乎)原生的方法可以做到这一点,而且非常简单: impor

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

您所想到的——当您按下
CTRL-Z
时发生的相同信号。这将暂停进程,直到它恢复

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

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

import time
time.sleep(5)

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

我刚刚用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>
kill-USR1
指挥部


不过,这只适用于UNIX。

您是指线程还是运行系统进程?我倾向于降低进程优先级,而不是“暂停”它。这样,其他进程将首先运行,我如何取消挂起它,使它从以前的位置继续工作?SIGSTOP不能被阻止,并且在这种情况下会稍微更准确,而不是来自tty。这并不能回答问题;这是关于暂停另一个进程。
kill -USR1 <pid>