如何检查正在执行的Python脚本行?

时间:2013-07-03 22:47:09

标签: python stack-trace

我有一个Python脚本在Linux服务器上运行了几个小时,为我处理了一些数字。我想检查它的进度,所以我想看看现在正在执行什么行。如果那是一个C或C ++程序,那么我只会使用gdb -p <pid>附加到该进程,并使用where检查堆栈跟踪。当然,我可以使用Python解释器进程执行相同的操作,但是我无法在堆栈跟踪中看到Python脚本的行。

那么,我如何找出当前正在执行的Python脚本行?

1 个答案:

答案 0 :(得分:6)

您可以向Python脚本添加信号处理程序,将此信息发送到终端或文件,然后点击终端中的^ C将信号发送到进程。

import signal

def print_linenum(signum, frame):
    print "Currently at line", frame.f_lineno

signal.signal(signal.SIGINT, print_linenum)

如果您需要^ C能够中断脚本,或者设置kill以定期打印信息,例如一秒一次。

如果你愿意,你可以从堆叠框架打印出其他东西;那里有很多。查看signal.alarm()个对象in this table的属性。