我正在努力做一个进度条.
是否可以计算脚本上的执行行数并将每个执行行与一个函数相关联,以便每行或每5行执行一次?
我的计划是每次执行一行时更新进度条.
可能吗?我可以使用装饰器来做吗?
是的,你可以通过让Python在每次处理一行时提醒你来做到这一点.这是一个在每次updatelines执行一行后打印到stdout的示例:
import sys
class EveryNLines(object):
def __init__(self, updatelines):
self.processed = 0
self.updatelines = updatelines
def __call__(self, frame, event, arg):
if event == 'line':
self.processed += 1
if not self.processed % self.updatelines:
print 'do something'
return self
def testloop():
for i in range(5):
print i
oldtracer = sys.gettrace()
sys.settrace(EveryNLines(3))
testloop()
sys.settrace(oldtracer)
Run Code Online (Sandbox Code Playgroud)
为方便起见,你当然可以把它变成装饰器.