2014-03-25 4 views
0

저는 파이썬을 배우는 중이며 Learn Python The Hard Way을 기반으로 간단한 루프를 시도했습니다. 내 기본적인 이해와 함께, 이것은 같은 위치에 한 번에 한 글자 "안녕하세요"인쇄를 유지해야합니다. 이것은 사실 인 것처럼 보이지만 인쇄물이 유동적이지 않고 각 문자에 동일한 시간을 소비하지 않습니다. 일부는 매우 빠르게 진행되고 하나에 1 ~ 2 초간 붙어있는 것 같습니다.왜이 간단한 루프가 "지저분한"인쇄물을 생성합니까?

이유를 설명해 주시겠습니까?

while True: 
    for i in ["H","e","l","l","o"]: 
     print "%s\r" % i, 
+0

시스템이 다른 작업을 수행해야하므로 인쇄 빈도가 떨어질 수 있습니다. 그러면 버퍼와 버퍼 플러시 및 작업 스위치 등이 있습니다. –

+0

실제로 나는 그것이 단지 '환상입니다'라고 생각합니다. 왜냐하면 기본적으로 화면에 더 많이 머물러야하기 때문입니다. – skamsie

+0

'사실'만 제거하면됩니다. 훨씬 빠르다. –

답변

2

매우 적은 작업만으로 무한 루프가 실행되며 대부분 인쇄됩니다. 이러한 응용 프로그램의 병목 현상은 실행 환경 (콘솔)에서 출력을 얼마나 빨리 통합 할 수 있는지입니다.

다양한 버퍼가 있으며 시스템에서 다른 프로세스를 예약 할 수 있으므로 몇 사이클 동안 앱을 일시 중지 할 수 있습니다.

+0

감사합니다. 그래서 매번 응용 프로그램을 일시 중지하는 것이 제 시스템입니다. 그것이 어려운 계산을 수행하고 있었다면 그것은 여전히 ​​일어날까요? 또한 응용 프로그램에 우선 순위를 부여하여이 일시 중지를 제거 할 수 있습니까? – margaritam

+1

이것은 모든 프로세스에서 발생하지만 빠르게 변경되는 I/O로 인해 더 많이 볼 수 있습니다. 아니요, 대신 실시간 OS로 다시 프로그래밍하지 않으면 일시 중지를 제거 할 수 없습니다. 멀티 태스킹 OS는 항상 * 지연을 도입합니다. –

관련 문제