2016-09-02 6 views
0

를 가져올 수 없습니다 기능 :ImportError를 : 나는 'timeit'모듈을 사용하여 실행 시간을 캡처해야하는 매우 간단한 테스트 기능을 가지고,하지만 난 오류</p> <p>을 얻을 이름 오류를

import timeit 
def test1():        
    l = [] 
    for i in range(1000): 
     l = l + [i] 

t1 = timeit.Timer("test1()", "from __main__ import test1") 
print(t1.timeit(number=1000)) 

The Error: C:\Python34\lib\timeit.py:186: in timeit timing = self.inner(it, self.timer) :3: in inner ??? E
ImportError: cannot import name 'test1' =========== 1 error in 0.03 seconds ==============

여러분이 해결책을 도울 수 있습니까?

+0

나는 그것을 재현한다. 그것은 모두 귀하의 코드입니까? –

+2

위의 코드는'test1' 함수에는 아무 것도 없습니다. 3,4,5 줄을 들여 쓰기해야합니다. 문제는 'timeit'이 코드를 수동으로 가져오고 가져 오기 오류가 발생한다는 것입니다. –

+0

여기에 코드를 복사하는 동안 실수를합니다. 내 IDE에서 들여 쓰기가 정확합니다. @MartinBonner –

답변

1

코드에 몇 가지 문제가 있다고 생각합니다. 먼저 모든 시간을 가져올 수 있는지 확인하십시오. 그리고 당신은 모듈로서 그것을 가지고 있습니다. 이를 위해, 당신은 실행할 수 있습니다

python -m timeit '"-".join(str(n) for n in range(100))' 

그것을 잘 실행하면 다음 확인 timeit 모듈을 가지고있다.

이제 질문과 관련 있습니다. 나는 자유를 깨끗한 방법으로 다시 쓰려고했다.

import timeit  

def append_list(): 
num_list = [] 
for i in range(1000): 
     num_list.append(i) 

print(timeit.timeit(stmt=append_list, number=1000)) #number is the number of repetion of the operation, in this case, 1000 
# you can also run 
print(timeit.timeit(stmt=append_list, number=1)) 

이제, 위의 당신은, 즉 할 목록에 1000 1에서 번호를 추가하는 데 필요한 시간을 계산하기 위해 원하는 것을 할 것입니다 수 있습니다.

+0

감사합니다. Vinit, 내 코드가 작동하는 것 같습니다. 하지만 'timeit.Timer'를 사용할 때 오류가 발생하는 이유는 무엇입니까? 다른 코드에서이 코드를 사용했지만 정상적으로 작동했습니다. 나는 왜 그것이 여기에서 일하지 않는지 계산할 수 없다. –