2016-06-24 3 views
-1

아래 코드를 실행하려고합니다. 5 분 동안 작동하지 않으면 문제가 무엇인지 알려주세요. 나는 백그라운드에서 이것을 .pyw으로 저장하여 실행하려고하고 있으며, 타이머 인수에서 전달되는 내용에 따라 1 시간 완료 후에 경고합니다.파이썬 타이머 분

import time 
import ctypes 
def timer(minutes): 
    seconds = minutes * 60 
    start = time.time() 
    time.clock() 
    elapsed = 0 
    while elapsed < seconds: 
     elapsed = time.time() - start 
    time.sleep(1) 
    timer(5) #would want enter in hours not in seconds 
    ctypes.windll.user32.MessageBoxA(0,"DoneToday", "Dones", 0) 
+0

당신이'바쁜 루프를 수행하여 수입 Timer' –

+0

대기 N 초 스레딩에서 끔찍한 생각에 의해 할 수있는 코드를 실행 볼 수 있도록. CPU가 100 % 작동하고 시스템에서 실행중인 모든 작업을 방해합니다. 이미'time.sleep'을 알고 있습니다 - 루프 대신에 이것을 사용하십시오. – interjay

답변

1

timer() 함수는 무한 루프입니다.

while elapsed < seconds: 루프를 두 줄 반복 한 후 timer(5)을 입력했습니다. 그건 그냥 다시 자신을 호출하고, 그래서이 줄을 제거하면 다시, 다시 ...

, 그것은 예상대로 작동합니다

timer(5) #would want enter in hours not in seconds 

그리고 @vermillon로

언급, 어떤 이유로 당신은 그냥 아니에요 time.sleep(minutes * 60)하고 있습니까? 나는 단지 시간을 세는 것 외에 다른 일을 계획하고 있다고 가정하고 있습니다.


편집 : 영업 이익은

>>> def timer(minutes): 
...  seconds = minutes * 60 
...  start = time.time() 
...  time.clock() 
...  elapsed = 0 
...  while elapsed < seconds: 
...   elapsed = time.time() - start 
...  time.sleep(1) 
...  ctypes.windll.user32.MessageBoxA(0,"DoneToday", "Dones", 0) 
...  print 'also printing Done so you can see it' 
... 
>>> timer(0.1) 
also printing Done so you can see it 
>>> 
+0

timer (5) # 초 단위가 아닌 시간으로 입력하고 싶습니다.이 인수를 5 분으로 전달하기 때문에이 줄을 제거하고 싶지 않습니다. – Jake

+0

무한 재귀가 발생하고 함수가 종료되지 않습니다. 이미'seconds = minutes * 60' 라인에서 수분에서 초로 변환 중입니다. 그렇다면'timer()'자체를 호출하는 이유는 무엇입니까? 그 선은 당신이하려고하는 것과 아무런 관련이 없습니다. 그리고 시간을 사용하려면 'minutes'대신'seconds = hours * 60 * 60'을 사용하십시오. 지시대로 지시선을 제거하면 정확히 예상대로 작동하는 것을 볼 수 있습니다. 당신이 말한대로 내가 주석처럼 – aneroid

+0

도망 ...하지만 아무것도 (분) code..import 시간 수입하는 ctypes 데프 타이머 아래로 발생하지 : \t초 = 분 * 60 \t 시작 =로 time.time() \t 시간 \t time.sleep (초) \t #timer (1) #would 시작 시간 않고 입력하고자 - \t \t는() =로 time.time 경과 : .clock() \t 경과 = 0 \t 동안은 <초 경과 inseconds \t ctypes.windll.user32.MessageB oxA (0, "Done", "Done", 0) – Jake