对没有 main() 函数的整个脚本使用 line_profiler

Using line_profiler for an entire script without a main() function

我刚刚构建了一个 Raspberry Pi 作为基本的测速相机,想对现有代码进行一些调整。我之前为很多项目断断续续地使用过各种语言进行过编程,但并不是一项专门的工作。

我用的代码是这样的(太长了所以没贴出来):

https://github.com/gregtinkers/carspeed.py

我想从使用 line_profiler 开始,尽可能帮助调整现有代码,慢慢地让我进行更改并了解它是如何工作的。

我已尝试转换现有脚本,以便;

  1. 整个代码都包含在一个 'main()' 函数中,包括 现有功能,
  2. 将现有函数定义下方的代码移动到新的 'def main():' 函数中,

这些导致我更改了大量现有代码以使其正常工作,但它总是没有,我最终迷路了!

我已经按照各种指南使用 line_profiler 并让它与现有定义的函数一起使用,但我想将其扩展到代码的其余部分。

我是不是错过了一个非常简单的方法?我应该如何处理它?

我无法测试代码,因为我没有 Rasberry Pi,但我会尝试从第 57 行开始(在您现有的函数定义之后)。基本上你是在定义一个 main() 函数,然后在文件作为脚本调用时调用它 (What does if __name__ == "__main__": do?).

def main():
    # define some constants
    DISTANCE = 76  #<---- enter your distance-to-road value here
    ...
    if (state == WAITING):
        ...
        # if the `q` key is pressed, break from the loop and terminate processing
        if key == ord("q"):
            return False #<=== note return instead of break 
         
    # clear the stream in preparation for the next frame
    rawCapture.truncate(0) 

#End of main()

if __name__ == '__main__:
    main()
    # cleanup the camera and close any open windows
    cv2.destroyAllWindows()