1

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):..."
...
4

1 回答 1

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 =找出我在哪里,顺便说一句:)

于 2013-09-20T08:10:21.167 回答