Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对函数计时并获取返回值_Python_Performance_Time - Fatal编程技术网

Python 对函数计时并获取返回值

Python 对函数计时并获取返回值,python,performance,time,Python,Performance,Time,我知道我可以用这个 from timeit import timeit test = lambda f: timeit(lambda:f(100), number=1) t1 = test(hello) 计算hello函数在参数100下运行的时间。但是假设我的hello函数返回字符串'world',我想存储返回的值,并计算执行所需的时间 可以这样做吗?如果您只想为特定函数的特定调用计时,可以执行以下操作。这将为您提供一次跑步的准确时间。然而,您可能只想使用timeit或profile来更准确地

我知道我可以用这个

from timeit import timeit
test = lambda f: timeit(lambda:f(100), number=1)
t1 = test(hello)
计算
hello
函数在参数
100
下运行的时间。但是假设我的
hello
函数返回字符串
'world'
,我想存储返回的值,并计算执行所需的时间


可以这样做吗?

如果您只想为特定函数的特定调用计时,可以执行以下操作。这将为您提供一次跑步的准确时间。然而,您可能只想使用timeit或profile来更准确地了解您的程序正在做什么。这些工具汇总多次运行,以获得更准确的平均案例结果

创建一个函数,该函数接受要调用的函数,记录时间,然后运行该函数并返回值和时间增量

import time

def timed(func, *args, **kwargs):
    start = time.time()
    out = func(*args, **kwargs)
    return out, time.time() - start

def my_func(value):
    time.sleep(value)
    return value

print(timed(my_func(5)))  # (5, 5.0050437450408936)

如果只想对特定函数的特定调用计时,可以执行以下操作。这将为您提供一次跑步的准确时间。然而,您可能只想使用timeit或profile来更准确地了解您的程序正在做什么。这些工具汇总多次运行,以获得更准确的平均案例结果

创建一个函数,该函数接受要调用的函数,记录时间,然后运行该函数并返回值和时间增量

import time

def timed(func, *args, **kwargs):
    start = time.time()
    out = func(*args, **kwargs)
    return out, time.time() - start

def my_func(value):
    time.sleep(value)
    return value

print(timed(my_func(5)))  # (5, 5.0050437450408936)

你想在这里实现什么?如果您正在设置
number=1
timeit
可能不是适合您的工具。@jornsharpe我想计算一下运行
hello(100)
一次所需的时间。这个方法是我在帖子上得到的最好答案。你能建议你还可以用哪种方法吗?我不明白否决票…你会怎么处理返回值?如果你只是想确保它是你所期望的,请考虑<代码> AsStudio。@ Jon RaSpe,我的讲师要求我们在实际运行过程中对所有功能进行计时。这不仅仅是为了检查性能。我需要对我的函数计时,并将它的结果用作程序中后续函数的参数。你可能想要这样的结果--投票结束你的问题,作为一个重复,你在这里想要实现什么?如果您正在设置
number=1
timeit
可能不是适合您的工具。@jornsharpe我想计算一下运行
hello(100)
一次所需的时间。这个方法是我在帖子上得到的最好答案。你能建议你还可以用哪种方法吗?我不明白否决票…你会怎么处理返回值?如果你只是想确保它是你所期望的,请考虑<代码> AsStudio。@ Jon RaSpe,我的讲师要求我们在实际运行过程中对所有功能进行计时。这不仅仅是为了检查性能。我需要对我的函数计时,并将它的结果用作程序中后续函数的参数。您可能需要类似这样的内容--投票以重复方式结束您的问题