Python包装脚本来测量另一个python文件的执行时间[重复]

Posted

技术标签:

【中文标题】Python包装脚本来测量另一个python文件的执行时间[重复]【英文标题】:Python wrapper script to measure execution time of another python file [duplicate] 【发布时间】:2020-11-24 02:32:29 【问题描述】:

如何制作一个 Python 包装脚本,以使用时间测量另一个脚本或另一个 .py 文件的执行时间?

【问题讨论】:

【参考方案1】:

你可以使用定时器模块

from timeit import default_timer as timer
start = timer()
function_you_want_to_time()
# or import your script here
# import script_to_time
end = timer()
elapsed = str(end - start)
print(f'Run time in seconds: elapsed')

【讨论】:

我实际上需要对整个脚本而不是脚本内部的函数进行计时。示例我有一个 benchrun.py ,我需要使用 wrapper.py 获取它的执行时间 它仍然有效,只需将function_you_want_to_time() 替换为import benchrun【参考方案2】:

我最近有一个类似的问题要解决,我的解决方案是编写一个可导入的模块,我可以通过import MyModule 调用它,它将捕获脚本执行时间以及任何运行时异常,然后将结果推送到数据仓库。

我的解决方案是这样的

import MyModule

def main():
    print("do work")

if __main__ == '__main__':
    try:
        main()
    except Exception as e:
        MyModule.script.script_execution(e)
    else:
        MyModule.script.script_execution()

MyModule 想要这样的东西

MyModule.__init__.py

from datetime import datetime


class ScriptExeuction:
    def __init__(self):
        self.start_time = datetime.now()

    def script_execution(self, exception=None):
        self.end_time = datetime.now()
        print(f"Execution took self.end_time - self.start_time")


if __name__ == '__main__':
    pass
else:
    script = ScriptExeuction()

当然,您需要扩展它以将数据放在您想要的位置,但您可以轻松扩展 ScriptExecution 类来处理将数据推送到某处的逻辑,并且您可以捕获脚本中发生的异常。

【讨论】:

以上是关于Python包装脚本来测量另一个python文件的执行时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python RPi - 从另一个脚本运行脚本时找不到文件

Python - 测量脚本中使用的内存量

用于包装嘈杂的python脚本并使用sed删除特定行的shell命令问题[重复]

Python:使用另一个函数从命令行调用我的脚本

Python 模块与包

使用来自另一个脚本的参数启动 python 脚本,以编程方式设置 argparse 值