【发布时间】:2011-02-17 18:11:12
【问题描述】:
有没有办法暂停进程(从可执行文件运行),以便它在暂停时停止 cpu 负载,并等到它取消暂停继续工作?可能在 python 中,或者以某种方式可以被 python 访问。
【问题讨论】:
-
你的意思是线程还是正在运行的系统进程?
-
我倾向于降低进程优先级而不是“暂停”它。这样其他进程将首先进行
有没有办法暂停进程(从可执行文件运行),以便它在暂停时停止 cpu 负载,并等到它取消暂停继续工作?可能在 python 中,或者以某种方式可以被 python 访问。
【问题讨论】:
通过使用 psutil (https://github.com/giampaolo/psutil):
>>> import psutil
>>> somepid = 1023
>>> p = psutil.Process(somepid)
>>> p.suspend()
>>> p.resume()
【讨论】:
我刚刚用 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。
【讨论】:
在 Python 中有一种(几乎)本机方法可以做到这一点,而且非常简单:
import time
time.sleep(5)
在这个 sn-p 中,5 是您要暂停程序的秒。
【讨论】:
【讨论】: