gpt4 book ai didi

Python/Tracing - 如何从跟踪器中停止函数的执行(从中返回)

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:31 25 4
gpt4 key购买 nike

如果我们设置 sys.settrace(tracer),是否有一种方法可以使用跟踪函数 tracer() 从函数 badfunc() 返回。我想计算 badfunc() 执行的行数,如果它执行的行数超过给定的行数,则返回它。

例如:

def badfunc():
while True:
import time
time.sleep(1)

def tracer(*args):
counter += 1
if counter > MAX_NUMLINES:
return_from_badfunc()
return tracer

sys.settrace(tracer)

谢谢!

最佳答案

可能是这样的:

import sys

MAX_NUMLINES = 7
counter = 0

class TooMuchLine(Exception):
pass

def tracer(frame, event, arg):
global counter
if event == "line":
counter += 1
print "counter", counter
if counter > MAX_NUMLINES:
raise TooMuchLine()

return tracer

def badfunc():
while True:
import time
time.sleep(1)


sys.settrace(tracer)

print 'start'

try:
badfunc()
except TooMuchLine:
print 'stopped'

print 'done'

输出:

start
counter 1
counter 2
counter 3
counter 4
counter 5
counter 6
counter 7
counter 8
stopped
done

注意:我希望你已经阅读了 this在玩 sys.settracer 之前 :)

关于Python/Tracing - 如何从跟踪器中停止函数的执行(从中返回),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com