Trong Python, Timer là một lớp con của lớp Thread. Gọi phương thức start[], bộ đếm thời gian bắt đầu. Các đối tượng hẹn giờ được sử dụng để tạo một số hành động được giới hạn bởi khoảng thời gian. Sử dụng đối tượng hẹn giờ tạo một số luồng thực hiện một số hành động. Hẹn giờ bị dừng bằng phương thức hủy []
Cách tạo đối tượng Timer
Sau đây là cách bạn có thể tạo một đối tượng Timer trong Python −
threading.Timer[interval, function, args = None, kwargs = None]
Bắt đầu hẹn giờ
đồng hồ bấm giờ. start[] được sử dụng để bắt đầu hẹn giờ. Đây là một ví dụ -
Ví dụ
đầu ra
Bye Demo Python Program
Hủy hẹn giờ
đồng hồ bấm giờ. hủy [] được sử dụng để hủy hẹn giờ. Đây là một ví dụ -
Ví dụ
import threading def mytimer[]: print["Demo Python Program\n"] my_timer = threading.Timer[3.0, mytimer] my_timer.start[] print["Cancelling timer\n"] my_timer.cancel[] print["Bye\n"]
đầu ra
Cancelling timer Bye
Luồng là kỹ thuật chạy nhiều luồng đồng thời để đạt được tính song song. Trong Python, chúng ta có thể triển khai phân luồng bằng mô-đun threading
. Bây giờ, mô-đun threading
có một lớp Timer
, có thể được sử dụng để thực hiện một số hành động hoặc chạy một số mã sau khoảng thời gian x
. Trong bài viết này, chúng ta sẽ xem cách chúng ta có thể sử dụng lớp này và hiểu rõ hơn về nó với sự trợ giúp của một ví dụ. Chúng tôi sẽ xây dựng một bộ đếm thời gian vô hạn
Lớp Timer
là lớp con của lớp Thread
và có thể được sử dụng để thực thi mã sau một số đơn vị thời gian. Nó chấp nhận hai đối số, cụ thể là, interval
và function
. interval
đề cập đến số giây mà sau đó mã sẽ được thực thi và function
là chức năng gọi lại sẽ được gọi khi hết thời gian yêu cầu. Lớp này có hai chức năng quan trọng, cụ thể là,
2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
2 và 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
3. Phương pháp 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
2 được sử dụng để khởi động bộ đếm thời gian và phương pháp 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
3 được sử dụng để hủy bỏ nóCác đối tượng hẹn giờ không bắt đầu theo mặc định. Chúng ta phải gọi phương thức
2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
2 để khởi chạy chúng. Và để dừng đồng hồ đang chạy, chúng ta có thể sử dụng phương thức 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
3Bây giờ chúng ta đã hoàn thành phần lý thuyết, hãy để chúng ta hiểu cách chúng ta có thể sử dụng lớp này trên thực tế để tạo một bộ đếm thời gian vô hạn. Tham khảo mã sau đây cho cùng
from time import sleep
from threading import Timer
from datetime import datetime
class MyInfiniteTimer[]:
"""
A Thread that executes infinitely
"""
def __init__[self, t, hFunction]:
self.t = t
self.hFunction = hFunction
self.thread = Timer[self.t, self.handle_function]
def handle_function[self]:
self.hFunction[]
self.thread = Timer[self.t, self.handle_function]
self.thread.start[]
def start[self]:
self.thread = Timer[self.t, self.handle_function]
self.thread.start[]
def cancel[self]:
self.thread.cancel[]
def print_current_datetime[]:
print[datetime.today[]]
t = MyInfiniteTimer[1, print_current_datetime]
t.start[]
sleep[5]
t.cancel[]
sleep[5]
t.start[]
sleep[5]
t.cancel[]
đầu ra
2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
Như chúng ta có thể thấy, lớp
2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
8 sử dụng lớp Timer
. Nó chấp nhận hai đối số. threading
0 và threading
1, đề cập đến số giây và chức năng gọi lại cho đối tượng Timer
. Khi một đối tượng lớp 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
8 được tạo, hàm tạo của lớp sẽ tạo một đối tượng hẹn giờ mới nhưng không khởi động nó. Bộ đếm thời gian có thể được khởi chạy bằng cách sử dụng phương thức 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
2 của lớp 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
8. Và sử dụng phương pháp threading
6, có thể dừng bộ hẹn giờ. Khi bộ đếm thời gian hiện tại kết thúc, trình xử lý hoặc threading
7 tạo một bộ đếm thời gian mới có cùng cấu hình với bộ đếm thời gian trước đó và khởi động nóĐể giới thiệu hoạt động của lớp
2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
8, trước tiên chúng ta tạo một đối tượng lớp 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
8 mới tại dòng threading
0 và sau đó gọi phương thức 2021-10-31 05:51:20.754663
2021-10-31 05:51:21.755083
2021-10-31 05:51:22.755459
2021-10-31 05:51:23.755838
2021-10-31 05:51:24.756172
2021-10-31 05:51:30.764942
2021-10-31 05:51:31.765281
2021-10-31 05:51:32.765605
2021-10-31 05:51:33.766017
2021-10-31 05:51:34.766357
2. Tiếp theo, chúng tôi đợi trong 19_______2 giây hoặc để đồng hồ chạy trong 19_______2 giây. Sau đó, chúng tôi dừng đồng hồ bấm giờ và đợi một lần nữa trong threading
2 giây. Cuối cùng, chúng tôi lặp lại hai quy trình cuối cùng và sau đó chương trình kết thúc