包装脚本,将记录另一个脚本的执行时间与参数

Wrapper script that would record the execution time of another script with parameters

我有一个包装脚本 wrapper.py 可以计时 benchrun.py

假设我 运行 benchrun.py 使用此命令:

python benchrun.py --host {host} -f {testfile} -t {number of threads} -s {mongo shell path}

我应该在运行 benchrun.py 脚本的包装器脚本中放入什么并获得执行时间?

你需要把执行前后的时间都减去,这样你就得到了执行时间;

在封装脚本中:

import time

执行前:

before= time.clock()

执行后:

after = time.clock()
totaltime = after-before

总时间是benchrun.py脚本的执行时间。

您是否正在使用 os.system 呼叫 benchrun.py?如果是这样,只需在开头和return之后设置datetime.now(),然后计算delta。它应该有效。

# timer.py
import time


def timer():
    def wrapper(f):
        def wrapped_f(*args, **kwargs):
            tic = time.perf_counter()  # more precise than '.clock'
            f(*args, **kwargs)
            toc = time.perf_counter()
            method_name = f.__name__
            print('{}: {:.2f}sec'.format(method_name, toc - tic))
        return wrapped_f
    return wrapper
# benchrun.py
from timer import timer


@timer
def benchrun():
    ...

首先,benchrun.py

import datetime

print ("sleeping now...")
time.sleep(10)
print ("done!") 

包装器:

import os
from datetime import datetime, timedelta

before = datetime.now()
os.system("python benchrun.py")
after = datetime.now()

print ("execution time: {0}".format(after - before))