2013-03-15 3 views
3

일부 가상 컴퓨터 플랫폼에서 Windows를 실행하면 Python의 time.clock() 함수가 정확하지 않습니다.
내가 다음 테스트 스크립트와 몇 가지 다른 플랫폼에 대한 몇 가지 테스트를했다 : 나는이 실행 된 가상 머신 플랫폼에 따라Windows에서 time.clock()에 대한 정확한 타이머가 있습니까?

import datetime 
import time 
import timeit 

startClock = time.clock() 
startTime = time.time() 

while (True): 
    currentClock = time.clock() 
    currentTime = time.time() 

    clockDiff = currentClock - startClock 
    timeDiff = currentTime - startTime 

    print (datetime.datetime.now()) 
    print ('time.clock() Seconds: %s' % str(clockDiff)) 
    print ('time.time() Seconds: %s' % str(timeDiff)) 
    print ('Diff:    %s' % str(clockDiff - timeDiff)) 
    print '' 

    time.sleep(5) 

을 clockDiff 및 timeDiff의 차이는 크게 변화. Parallels Desktop 8 for Mac, VMWare Fusion 5 및 Hyper-V를 사용해 보았습니다.

this related question을 참조하십시오. 문제는 하이퍼 바이저가 낮은 수준의 QueryPerformanceCounter 기능을 처리하는 방법입니다.

하이퍼 바이저가 실행 중인지 여부에 관계없이 정확한 타이밍을 원합니다. 시간을 사용할 수 있습니다. time(), 시간에서 얻을 수있는 정밀도는 없습니다 .clock().

동일한 정밀도를 제공하는 time.clock()에 대한 대체 타이머가 있습니까? Windows에서 Python 2.7을 실행하고 있습니다.

감사합니다.

답변

3

timeitdefault_timer을 제공하며 이는 현재 시스템에서 가장 정확한 휴대용 타이밍 메커니즘을 반환합니다.

+1

Windows에서'timeit.default_timer()'는'time.clock()'을 사용합니다. 'timeit.default_timer()'가 가장 정확한 타이머가 아닌 가장 _precise_ 타이머를 얻기위한 것임을 기반으로합니다. – AndyGeek

관련 문제