본문 바로가기
파이썬

파이썬 timeit.Timer ()를 사용할 때 함수의 매개 변수를 전달하는 방법

by º기록 2020. 10. 11.
반응형

이것은 간단한 프로그램의 개요입니다.

# some pre-defined constants
A = 1
B = 2

# function that does something critical
def foo(num1, num2):
    # do something

# main program.... do something to A and B
for i in range(20):
    # do something to A and B
    # and update A and B during each iteration

import timeit
t = timeit.Timer(stmt="foo(num1,num2)")  
print t.timeit(5)

"전역 이름 foo가 정의되지 않았습니다"라는 메시지가 계속 표시됩니다 ..... 누구든지 이것에 대해 나를 도울 수 있습니까? 감사!

 

해결 방법

 

코드 조각은 자체 포함되어야하며 외부 참조를 만들 수 없습니다. statement-string 또는 setup-string에서 값을 정의해야합니다.

import timeit

setup = """
A = 1
B = 2

def foo(num1, num2):
    pass

def mainprog():
    global A,B
    for i in range(20):
        # do something to A and B
        foo(A, B)
"""

t = timeit.Timer(stmt="mainprog()" setup=setup)
print(t.timeit(5))

더 좋은 방법은 전역 값을 사용하지 않도록 코드를 다시 작성하는 것입니다.

 

참조 페이지 https://stackoverflow.com/questions/5086430

 

 

반응형

댓글