2017-11-23 1 views
0

나는 내 작업 pc에 작은 타이머를 코딩하려고했다. 우스운 점은 카운터가 너무 느려서 실행 시간이 오래 걸린다는 것입니다. 나는 정말로 혼란 스럽다. 업데이트 간격이 짧을수록 지연은 커집니다. 내 PC가 너무 느린가요? 이 CPU를 실행하는 동안 CPU는 약 30 %입니다 ... idk. python3.6.3Python Counter too slow

import time 
def timer(sec): 
    start = sec 
    print(sec) 
    while sec > 0: 
     sec = sec-0.1   #the smaller this value, the slower 
     time.sleep(0.1) 
     print(round(sec,2)) 
print("Done! {} Seconds passed.".format(start)) 



start = time.time()   #For Testing 
timer(10) 
print(time.time()-start) 

답변

0

당신이로 time.time()에 정상 연산자를 사용할 수 있습니다,이 방법을 시도 당신은 트리거 시스템 호출 (커널에 대한 호출을 필요로 처리 잠자는

import time 

start = time.time() 

seconds = 5 

while True: 
    if start - time.time() > seconds: 
    print(seconds + " elapsed.") 
1

하드웨어 중단을 통해 커널에 손을 대기), 하드웨어 클럭 중단으로 프로세스가 완료되면 깨어납니다. Sleeping은 많은 CPU 계산이 아니지만 하드웨어 인터럽트 및 커널이 프로세스를 처리하기를 기다리는 동안 여러 CPU 사이클이 소요될 수 있습니다.

오히려 시간의 일정한 단위를 기다리는 것보다, 당신이 (차이를 다음 단계로 반올림, 현재 시간을 점점 얻어서) 다음 이정표를 공격하는 데 필요한 시간

+0

당신을 기다리는 것이 좋습니다 또한 스케줄러를 보길 원할 수도 있습니다. https://docs.python.org/3.6/library/sched.html –