使用bash terminal命令尝试/ except循环作为中断

时间:2016-10-02 21:30:27

标签: python gnu-screen

我在Linux中使用简单的python.py脚本。我需要运行一个while / counter循环,并希望通过使用/ any terminal命令立即停止循环。我需要使用Screen运行脚本。简单地停止屏幕会话不起作用 - 它只停止循环中的当前进程,然后继续下一个进程。终端命令最好特定于所讨论的循环。

我正在看一个Try / Except循环:

x = 1
y = 100
try:
    while x < y:
        process x
        time.sleep(10)
        x = x + 1
except ?

我不知道从哪里开始。我需要实施方面的帮助,或者更好的方法来实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果这是linux,那么您可以使用操作系统信号。 只需创建一个抛出异常并捕获该异常的信号处理程序。 使用

注册信号处理程序
signal.signal(signal.SIGINT, handler)

这将注册在将SIGINT发送到进程ID时要调用的处理函数。

import signal, time
class InterruptException(Exception):
    pass

def handler(signum, frame):
    raise InterruptException("Recieved SIGINT")


# Set the signal handler
signal.signal(signal.SIGINT, handler)

x = 1
y = 100
try:
    while x < y:
        print x
        time.sleep(10)
        x = x + 1
except InterruptException:
    print "Iterrupted"

从bash你可以使用

kill -2 PID

其中PID是正在运行的脚本的进程ID

你可以随时从bash中启动和杀死

python my.app &
MY_PID=$!
kill -2 $MY_ID