2012-02-05 3 views
4

내가 원래 다음과 같습니다 타이밍 함수에 대한 사용자 정의 함수를 만든 :* timeit.Timer 객체에 * args를 전달하는 방법은 무엇입니까?

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 모듈에 대해 배운, 나는 그것을 사용하여 같은 일을 구현하려는. 나는 함수와 인자를 인자로 보내는 동안 그것을하는 법을 이해할 수 없다. 나는 이미 내가 설정 인수에서이 작업을 수행 할 필요가 있음을 알아 낸 :

"from __main__ import function" 

하지만 난 'STMT'과 '설정'인수가 문자열 모두 있기 때문에, * 인수에 대해 무엇을 알아낼 수 없습니다 어떻게 변수를 전달할 수 있습니까?

+0

'* (args + [arg1, arg2])'할 수 있다고 생각합니다. – Blender

답변

5

파이썬 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')) 
관련 문제