cla*_*lam 2 python lambda arguments timeit
我有一个名为Python的函数func,我正在尝试使用它timeit.
func接受一个论证,f这也是一个函数.在我正在编写的程序中,它是一个lambda函数,但它也可以是一个定期定义的函数.重要的是该函数的源代码不可用func,所有可用的源代码都是对它的引用.
我正在做的事情:
def testTimingOfFunc(f):
time = timeit.timeit("package.func(f)", "from src import package")
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说f没有定义.
其他一切都正常.我打电话的时候:
testTimingOfFunc('lambda x:x**2')
Run Code Online (Sandbox Code Playgroud)
并将功能更改为:
def testTimingOfFunc(f):
time = timeit.timeit("package.func(" + str(f) + ")",
"from src import package")
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,所以我知道关于timeit功能的一切都很好.
这不是testTimingOfFunc有效的方式; 传入函数引用,而不是字符串.
我如何能够通过任何想法f作为参数传递给func在timeit?
可以使用python可调用值调用timeit:只需将方法更改为:
from src import package
import functools
def testTimingOfFunc(f):
time = timeit.timeit(functools.partial(package.func, f))
Run Code Online (Sandbox Code Playgroud)