def test():
"""Stupid test function"""
L = []
for i in range(100):
L.append(i)
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
但是如何使用参数调用函数,例如,像这样的函数:
def test(some_object):
"""Stupid test function"""
L = []
for i in range(100):
L.append(some_object)
答案 0 :(得分:6)
错误,如果我的问题是对的,你只是在找那个?
anobj = 42 # where it can be whatever object
def test(foo):
pass # do something with foo
if __name__ == '__main__':
import timeit
print(timeit.timeit("test(anobj)", setup="from __main__ import test, anobj"))
答案 1 :(得分:2)
这是一个在这种情况下对我有用的解决方案,只要你的论点不是巨大的矩阵或类似的东西。
让我们说我想测试一个函数foo(a,b,c),其中包含我在main函数中初始化的值。我可以在不改变代码的情况下调用以下内容,
timeit.Timer('foo({},{},{})'.format(a,b,c), "from __main__ import foo")
如果您的参数是字符串,那么您必须重新引入值的引号:
timeit.Timer('foo("{}","{}","{}")'.format(a,b,c), "from __main__ import foo")
作为最后警告,您必须考虑您的参数将通过str()格式,这可能会导致它们失去各种精度和完整性。如果您使用此方法,请检查您的输入!
答案 2 :(得分:0)
您想使用:
def main():
import timeit
print(timeit.timeit("test(some_object)")) # don't need to use the 'setup'
def test(my_object):
lst = []
for i in range(100):
lst.append(my_object)
if __name__ == '__main__':
main()