2010-12-29 3 views
4

정확한 기간 동안 루프를 실행해야합니다. 예를 들어 내가 만들고자하는 코드는 다음과 같습니다.Python : 정확한 기간 동안 루프 실행

initialize and lauch timer 

while timer<10000sec: 
    do things 

이 작업을 수행하는 방법을 알고 계십니까?

감사합니다 :)

+0

주어진 시간이 지나면 '할 일'을 * 취소해야합니까? 아니면 먼저 완료해야합니까? – plundra

+0

"Do thing"전체가 완료되어야하므로 타이머 끝에서 중단해서는 안됩니다. – Nix

+0

당신은 얼마나 정확하게해야합니까, 그리고 왜? –

답변

6
stop = time.time()+10000 
while time.time() < stop: 
    do things 

이것은 당신이 (당신이 달성하고자하는 정밀도에 대한) 자주 현재 시간을 읽을 수 있도록 루프를 실행할 때마다 짧은 충분히되어 있어야합니다.

+0

한편, 루프 본문이 매우 짧은 경우 각 반복에서 'time.time()'을 호출하면 런타임을 지배 할 수 있습니다. 제가 OP에 대해 말하고자하는 것은 성능이 여기에서 중요 할 경우 대체 접근 방식을 고려할 수 있다는 것입니다. –

+0

이 코드는 완벽하게 작동합니다. 그러나 방법이 있으면 전력 소비가 적습니다. – Nix

+0

@Nix : "할 일"이 실제로 무엇인지 설명해야합니다. 좋은 프로그래밍에서는 폴링 대신 무언가가 일어날 때까지 기다릴 때 블로킹해야합니다.이 (나쁜) 접근 방식을 "바쁜 대기"라고합니다. 통화 중 대기가 필요한 경우 지연 시간이 예를 들어 time.sleep (지연)을 루프에 넣을 수 있습니다. 0.2. –