Bộ đếm thời gian luồng trong python là gì?

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

Bộ đếm thời gian luồng trong python là gì?


Bộ đếm thời gian luồng trong python là gì?

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à, intervalfunction. 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
3

Bâ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ố. threading0 và threading1, đề 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 threading6, 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 threading7 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 threading0 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 threading2 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

Chủ đề hẹn giờ là gì?

Bộ hẹn giờ là một lớp con của Chủ đề . Lớp bộ hẹn giờ đại diện cho một hành động chỉ được chạy sau một khoảng thời gian nhất định đã trôi qua. Bộ hẹn giờ bắt đầu hoạt động sau một khoảng thời gian trễ và có thể bị hủy tại bất kỳ thời điểm nào trong khoảng thời gian trễ đó. Bộ hẹn giờ được bắt đầu, như với các luồng, bằng cách gọi phương thức start() của chúng.

Luồng có nghĩa là gì trong Python?

Phân luồng trong python được dùng để chạy nhiều luồng (tác vụ, lệnh gọi hàm) cùng một lúc . Lưu ý rằng điều này không có nghĩa là chúng được thực thi trên các CPU khác nhau. Các luồng Python sẽ KHÔNG làm cho chương trình của bạn nhanh hơn nếu nó đã sử dụng 100% thời gian CPU.