파이썬 시간관련 질문입니다
조회수 1900회
import time
start_time = time.time() #time.time()-start_time 은 프로그램 총 구동시간입니다
count = 0
while True:
if A<10 and B<10
~~~~~~
if A>20 and B>20
break
제가 만든 코드의 대략적인 구조인데요
run file을 하면 그때부터 A와 B의 값은 계속 변합니다.
A<10 and B<10 이 된다고 바로 첫번쨰 if이하 상황이 발생하는게 아니라
A<10 and B<10 의 조건이 3초이상 지속되어야지 if이하 상황이 발생되게 하고싶습니다.
저는 두가지 방법으로 시도해봤는데요
if A<10 and B<10
temp = time.time() - start.time #조건이 만족된 그 순간의 시간을 임시변수temp에 집어넣음
if time.time()-start.time-temp>=3#조건만족이후 시간-조건만족순간의 시간이 3이상이면
~~~~~~~~~~~~~~ #실행
위 방법은 while문 내에서 time.time()-start.time의 값이 계속바뀌다보니 temp의 값을 고정시킬수없어서 실패했습니다.
두번쨰 방법은
if A>=10 and B>=10 #실행조건이 아니면
time.time()-start.time=0 #실행시간을 0으로 초기화하고
if A<10 and B<10 #실행조건이면
if time.time()-start.time>=3 #그리고 시간이 3초이상 흐르면
~~~~~~ #실행
이 방법은 SyntaxError: can't assign to operator.
time.time()-start.time의 값을 어떤 변수에 assign할수있지만 그 반대는 저런 에러가 떴습니다.
지금은 time을 써서 해결할수있는건지도 의심스러운데요 조언 부탁드립니다...
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
조건이 3초 이상 유지되어야 뒷 코드가 실행되게 하고 싶으신거죠? (댓글로 짐작했습니다)
busy-waiting을 피할 수 없는 것 같은데... 이런 코드는 어떤가요?
from datetime import datetime before = datetime.now() while(True): if A < 10 and B < 10: now = datetime.now() if (now - before).seconds <= 180: # A < 10 and B < 10 3분간 지속되는지 계속 확인 continue else: before = datetime.now() # A < 10 and B < 10 가 아닌 경우 타임 카운트 초기화 if A > 20 and B > 20: pass # 어쩌구 저쩌구
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력