2013-06-15 2 views
2
import time 

def threedot(): 
    time.sleep(0.5) 
    print '.', 
    time.sleep(0.5) 
    print '.', 
    time.sleep(0.5) 
    print '.' 

threedot() 

위의 코드를 실행하면 인터프리터는 1.5 초 동안 기다린 다음 '를 인쇄합니다. . '; 인쇄하는 사이에 0.5 초 정도 기다리는 것이 아니라 '.'. 왜 이런거야? (on python 2.7.3)파이썬에서 시간 모듈 시퀀스

+0

당신은 또한 이것을 고려해 볼 수 있습니다 http://stackoverflow.com/questions/881696/unbuffered-stdout-in-python-as-in-python-u-from-within-the-program – jamylak

답변

3

최종 출력 코드 print까지 실제로 출력되지 않는 여러 이벤트 중 하나가 발생할 때까지 출력이 캐시됩니다. 매번 출력 (힌트 : sys.stdout.flush())을 내 뿜으십시오.

+0

매 인쇄마다 출력물 내뿜기 명령이 작동합니다. 감사. – Pro542

+0

libc가 OS가 아니라 출력을 버퍼링합니다.

0

stdout은 대개 "라인 버퍼"입니다. 이는 libc가 개행 문자가 나오거나 스트림이 닫힐 때까지 출력을 버퍼링하고 (콘솔에 쓰지 않음) 의미합니다.

stderr에 쓸 수도 있고 매번 출력 스트림을 수동으로 플러시 할 수도 있습니다.

+0

이것은 내가 가진 문제점을 분명히합니다. 감사. – Pro542

관련 문제