Python:获取当前行运行时

时间:2013-09-20 07:23:06

标签: python windows signals traceback

Python如何获取正在运行的脚本块,运行时

print a()             #takes couple of seconds, 3s
print b()             #takes couple of seconds, 3s
pass
print c()             #takes couple of seconds, 4s
print d(), \
      t,y,u,i,o       #takes couple of seconds, 4s
print z

例如,要知道(报告)在第二个7日运行的内容。

report(7s): print c()

编辑:

我们保留上述内容,以证明给出的评论是合理的;)但是下面我们将更详细地描述我们的问题。

正在逐行执行Python代码(或逐块更好地执行)。例如见:

code.py中的

for i in xrange(10000000):                #assume this will take some seconds
   pass

print 'something'
#another time consuming job
for j in xrange(10000000):                #assume this will also take some seconds
   pass

print 'another thing'

我们正在考虑设置一个时间线程,每隔5秒进行一次打印(即报告)我们在运行时代码中的位置。因此,每5秒钟打印执行期间发生的事情。

示例输出:

>>> 00:05 in progress: "for i in xrange(10000000):..."
>>> 00:10 in progress: "for i in xrange(10000000):..."
>>> 00:15 in progress: "for j in xrange(10000000):..."
...

1 个答案:

答案 0 :(得分:1)

def fowia(signal, frame):
    print frame.f_lineno


import signal
signal.signal(signal.SIGHUP, fowia)

for i in xrange(10000000):                
    for k in xrange(100000000):
       pass

print 'something'
#another time consuming job
for j in xrange(10000000):                
        pass
print 'another thing'

要使用这个简单示例,请启动它,然后从另一个shell中找到该进程的pid号。然后向进程发送HUP信号。它将打印当前行号。有关可以使用的其他程序源内省方法的列表,请参阅http://docs.python.org/2/library/inspect.html

fowia =找出我的位置,顺便说一下:)