如何将 *args 传递给我的 timeit.Timer 对象?

发布于 2025-01-02 04:02:43 字数 503 浏览 2 评论 0原文

我最初为计时函数制作了一个自定义函数,如下所示:

def timefunc(function, *args):
    start = time.time()
    data = function(*args)
    end = time.time()
    time_taken = end - start
    print "Function: "+function.__name__
    print "Time taken:",time_taken
    return data

现在,在了解了 timeit 模块后,我想使用它来实现相同的功能。我只是不知道如何在向其发送函数和 *args 参数时执行此操作。我已经发现我必须在 setup arg 中执行此操作:

"from __main__ import function"

但是我不知道如何处理 *args,因为 'stmt' 和 'setup' 参数都是字符串,我如何传递变量?

I originally made a custom function for timing functions that looks like this:

def timefunc(function, *args):
    start = time.time()
    data = function(*args)
    end = time.time()
    time_taken = end - start
    print "Function: "+function.__name__
    print "Time taken:",time_taken
    return data

Now, having learned about the timeit module, I want to implement the same thing using that. I just can't figure out how to do it while sending it the function and *args arguments. I have already figured out that I have to do this in the setup arg:

"from __main__ import function"

But I can't figure out what to do about *args, since both the 'stmt' and 'setup' arguments are strings, how can I pass the variables?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的奇迹 2025-01-09 04:02:43

从 Python 2.6 开始,timeit 模块除了字符串之外还接受可调用的 stmt。考虑到这一点,你可以这样做:

import timeit

def timefunc(function, *args):
    def wrap():
        function(*args)
    t = timeit.Timer(wrap)
    return t.timeit(100)

def test(arg):
    foo = arg

print(timefunc(test, 'bar'))

Starting with Python 2.6 the timeit module besides a string also accepts a callable as stmt. With that in mind you can do this:

import timeit

def timefunc(function, *args):
    def wrap():
        function(*args)
    t = timeit.Timer(wrap)
    return t.timeit(100)

def test(arg):
    foo = arg

print(timefunc(test, 'bar'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文