2017-12-23 9 views
1

이 코드는 무한 루프를 입력 보인다무한 루프, 알 수없는 이유는 몇 가지 이유를 들어

import timeit 

t = timeit.Timer(stmt="for num in num_list: print(num)", 
       setup="num_list = [digit for digit in range(1, 101)]") 

print(t.timeit()) 

내가 파이썬 버전 3.6.2가 아나콘다를 통해 설치 한 이유는 단서가 없다.

Spyder IDE 및 명령 프롬프트에서 실행 해 보았는데 모두 동일한 결과가 나타납니다.

목록을 이해하는 대신 생성기로 설정을 변경하면 모든 것이 정상적으로 작동하며 동일한 코드가 실행되는 것과 같은 문제가 발생할 수 있습니다.

나는 컴퓨터를 다시 시작하려고했는데, 나중에 컴퓨터를 끄고 다시 시도해야하기 때문에 대부분의 작업에 사용할 수 있습니다.

+0

시간 초과없이 사용해 보셨습니까? – SuperStew

+2

https://docs.python.org/3/library/timeit.html - 기본 개입은 1,000,000입니다. – Blorgbeard

+0

@SuperStew 나는 원래의 게시물에 이미 timeit 밖에서 작동하는 것을 확인했다. – Christoff

답변

4

무한 루프가 아닙니다. 긴 루프 일뿐입니다. setup은 한 번만 실행되기 때문에 생성자 표현식을 사용하면 stmt의 첫 번째 실행 후 소비되고 더 이상 아무 것도 인쇄되지 않습니다. 목록 이해를 사용하면 각 목록 요소는 stmt이 인쇄 될 때마다 인쇄되므로 print으로 100 × 1000000 건이 호출됩니다. (에 대한 기본 반복 횟수는 1 백만 회입니다.)