我有一个 Python 脚本,它在 Linux 服务器上运行了几个小时,为我处理一些数字。我想检查它的进度,所以我想看看现在正在执行哪一行。如果那是 C 或 C++ 程序,那么我将使用 gdb -p <pid>
附加到进程并使用 where
检查堆栈跟踪.当然,我可以对 Python 解释器进程执行相同的操作,但我在堆栈跟踪中看不到 Python 脚本的行。
那么,如何找出当前正在执行的 Python 脚本的哪一行呢?
最佳答案
您可以将信号处理程序添加到将此信息发送到终端或文件的 Python 脚本,然后在终端中按 ^C 以将信号发送到进程。
import signal
def print_linenum(signum, frame):
print "Currently at line", frame.f_lineno
signal.signal(signal.SIGINT, print_linenum)
如果您需要 ^C 能够中断脚本,或者设置 signal.alarm( )
定期打印信息,例如每秒一次。
如果你愿意,你可以从栈帧中打印出其他东西;那里有很多。查看 frame
对象的属性 in this table .
关于python - 如何检查正在执行的 Python 脚本的哪一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459298/