Python 3.x 如何使timeit.Timer()与itertools.starmap()的输出一起工作

Python 3.x 如何使timeit.Timer()与itertools.starmap()的输出一起工作,python-3.x,timer,partial,timeit,starmap,Python 3.x,Timer,Partial,Timeit,Starmap,我很难受 为什么我可以使timeit.Timer()使用 functools.partial(),但不包含来自itertools.starmap()的输出 我基本上需要的是starmap(func,元组)具有与partial(func,仅一个参数)相同的“属性” 但更一般地说,我可以同时将多个参数传递到func中 这里最简单的解决方法是什么? 我尝试了timeit.Timer(starmap(func,tuples))显然得到了臭名昭著的错误: ValueError: stmt is neith

我很难受 为什么我可以使
timeit.Timer()
使用
functools.partial()
,但不包含来自
itertools.starmap()
的输出

我基本上需要的是
starmap(func,元组)
具有与
partial(func,仅一个参数)相同的“属性”
但更一般地说,我可以同时将多个参数传递到func中

这里最简单的解决方法是什么? 我尝试了
timeit.Timer(starmap(func,tuples))
显然得到了臭名昭著的错误:

ValueError: stmt is neither a string nor callable

我想这是因为星图的输出不可调用。但是如何解决这个问题呢?

函数返回一个
itertools.starmap
可调用类型,而
functools.partial()
返回一个
functools.partial
可调用类型
timeit.Timer()
要求第一个参数是可调用的
字符串(或者它可以
exec()

>类型(itertools.starmap(lambda*args:list(args),[(1,2)])
itertools.starmap
>>>类型(functools.partial(λx:x+1,1))
部分函数
您要做的是创建一个callable,它将耗尽由
itertools.starmap
返回的iterable。一种方法是对starmap的输出调用
list()
函数:

#这是要调用的函数
>>>示例_func=lambda*args:len(args)
#这是可以调用示例_func的iterable
>>>func_调用者=itertools.starmap(示例_func,[(1,2)])
#这是实际处理函数调用者的可调用函数
>>>execute_callers=lambda:list(func_调用者)
#最后使用定时器
>>>timeit.Timer(执行调用方)
请您提供一个示例,并展示您所尝试的内容。