2010-04-19 3 views
2

Windows에서 time.clock()이 처음으로 호출되면 타이머를 시작하고 그 이후의 호출에 대한 첫 번째 호출 이후 경과 된 시간을 반환합니다. 시계를 다시 시작하는 유일한 방법은 새로운 프로세스를 시작하는 것입니다.파이썬 time.clock() - 스레드로 클럭 값 재설정

time.clock()을 다시 시작해야하는 시작 및 종료 스레드입니까? 지금 당장은 작동하지 않는 것 같습니다. 그렇지 않다면 전체 실행 파일을 다시 실행하는 유일한 해결책입니까?

답변

4

스레드는 프로세스가 아니므로 아니요. (사소한 점은 파이썬에서 스레드를 죽일 수는 없으며, 종료를 요구할뿐입니다. 그러한 수단이 존재하는 다른 수단을 통해 스레드를 죽이는 것은 파이썬을 나쁜 상태로 남겨두기 쉽습니다.)

질문이 인 이유는이고 타이머를 재설정하려면 time.clock()을 사용해야합니다. time.time()이 적합하지 않은 높은 정밀도로 두 지점 사이의 경과 시간을 신경 쓰면 두 번째 지점에서 첫 번째 지점을 빼면됩니다. 재설정이 필요하지 않습니다. time.time()time.clock()과는 반대로 모든 플랫폼에서 동일한 방식으로 작동하기 때문에 작은 단위의 차이에 대해 실제로 신경 쓰지 않는 한 time.time()을 사용하는 것이 좋습니다.

+0

를, 그래서 예, time.clock을 사용할 것(). 나는 차이를 찾기 위해 두 값을 뺀다. 답변 해주셔서 감사합니다 – PPTim

0

시간을 측정하기 위해 두 번째 부동 소수점이 더 크므로 time.time()보다 더 높은 time.clock()의 정밀도로 재설정 할 수있는 시계를 원한다면 스레드를 서로 비워 두십시오 (거의 감지 할 수없는 차이). 일부 코드를 실행하는 과거 동안 당신이 시도 할 수 있습니다 :

t0 = time.clock() 
... do something 
print('Running time:', time.clock()-t0) 

요는 기능이 장식 시도 할 수 있습니다 :이 후

def duration(code): 
    def f(*args): 
     t0 = time.clock() 
     bar = code(*args) 
     print('Running time:', time.clock()-t0) 
     return bar 
    return f 

을 당신이 장식으로 함수를 정의 할 수 있습니다 :

@duration 
def myFun(*args): 
    ... do something 

또는 그냥 장식과 함께 함수를 호출 : 내가 시리얼 통신 사이의 반응을 측정하기 위해 노력하고있어

duration(myFun)(*args)