일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스팸
- socketio
- CLASS
- humble
- 오블완
- 티스토리챌린지
- openAI
- tensorflow
- error
- string
- 터미널
- ubuntu
- ROS2
- opencv
- 맛집
- no space left on device
- CUDA
- linux
- python
- timm
- 판교
- Android
- ros
- TTS
- ChatGPT
- 분당맛집
- GPT
- pytorch
- Torch
- 딥러닝
- Today
- Total
RoBoLoG
[Python] 10초 타이머 만들기 본문
클래스 내에 is_on 변수와 timer 함수를 포함시키고 싶다면, 다음과 같이 코드를 수정할 수 있습니다
방법1. time.sleep 사용
import threading
import time
class MyClass:
def __init__(self):
self.is_on = False
def timer(self):
time.sleep(10)
self.is_on = True
def start_timer(self):
timer_thread = threading.Thread(target=self.timer)
timer_thread.start()
timer_thread.join()
print("is_on:", self.is_on)
# 클래스의 인스턴스 생성
my_object = MyClass()
# 타이머 시작
my_object.start_timer()
이 업데이트된 코드에서는 MyClass라는 클래스를 정의합니다. 클래스에는 __init__ 메서드가 있으며, 이 메서드는 인스턴스 변수 is_on을 False로 초기화합니다. timer 메서드는 클래스 내에 정의되어 있으며, self.is_on을 사용하여 인스턴스 변수에 접근합니다.
또한, start_timer라는 새로운 메서드를 추가하였습니다. 이 메서드는 스레드를 생성하고 self.timer를 대상 함수로 전달합니다. 스레드를 시작한 후 timer_thread.join()을 사용하여 스레드가 실행을 완료할 때까지 기다립니다. 마지막으로, self.is_on의 값을 출력하여 10초 지연 이후에 True로 변경되었는지 확인합니다.
이 클래스를 사용하기 위해 my_object = MyClass()와 같이 클래스의 인스턴스를 생성한 다음, my_object.start_timer()를 호출합니다.
이렇게 하면 is_on 변수와 timer 함수가 클래스 내에 캡슐화되며, self.is_on은 클래스의 인스턴스를 사용하여 접근하고 수정할 수 있습니다.
방법2. time.time() 사용
import threading
import time
class MyClass:
def __init__(self):
self.is_on = False
self.event = threading.Event()
def timer(self):
start_time = time.time()
while not self.event.is_set():
if time.time() - start_time >= 10:
self.is_on = True
self.event.set()
def start_timer(self):
threading.Thread(target=self.timer).start()
self.event.wait()
print("is_on:", self.is_on)
# 클래스의 인스턴스 생성
my_object = MyClass()
# 타이머 시작
my_object.start_timer()
이 코드에서는 MyClass의 __init__ 메서드에서 threading.Event를 초기화하고, timer 메서드에서는 self.event의 상태를 확인하여 경과 시간을 계산하고, self.is_on이 True로 변경되면 self.event.set()을 호출하여 이벤트를 설정합니다.
start_timer 메서드에서는 스레드를 생성하고 self.timer를 대상 함수로 지정합니다. 그리고 self.event.wait()을 호출하여 이벤트가 설정될 때까지 대기합니다.
마지막으로 self.is_on의 값을 출력하여 10초 지연 이후에 True로 변경되었는지 확인합니다.
이렇게 하면 time.sleep() 대신 threading.Event와 time.time()을 사용하여 타이머 함수를 구현할 수 있습니다.
'Study > Python' 카테고리의 다른 글
[Python] LINE Notify를 사용하여 LINE에 사진 메시지 전송 (0) | 2023.06.21 |
---|---|
[Python] Opencv로 간단한 모자이크 만들기 (0) | 2023.06.20 |
[Python] python으로 socketio 서버와 클라이언트 만들기 (0) | 2023.06.16 |
[Python] Jupyter 에서 Input() 입력함수 사용하기 (1) | 2023.02.03 |
[Python] 터미널로 .py 실행시 매개변수 입력 (argparse) (0) | 2023.01.25 |