是否有可能在每x行被解释的函数中调用一个函数?

rel*_*ima 2 python

我正在努力做一个进度条.

是否可以计算脚本上的执行行数并将每个执行行与一个函数相关联,以便每行或每5行执行一次?

我的计划是每次执行一行时更新进度条.

可能吗?我可以使用装饰器来做吗?

Kir*_*ser 9

是的,你可以通过让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)

为方便起见,你当然可以把它变成装饰器.