Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengekalkan Kawalan Ke Atas Mengulang Fungsi Menggunakan Python's Threading.Timer?

Bagaimana untuk Mengekalkan Kawalan Ke Atas Mengulang Fungsi Menggunakan Python's Threading.Timer?

Barbara Streisand
Barbara Streisandasal
2024-11-09 18:37:02426semak imbas

How to Maintain Control Over Repeating Functions Using Python's threading.Timer?

Pemasa.Pemasa - Mengekalkan Kawalan ke atas Fungsi Berulang

Pemasa.Pemasa Python menyediakan mekanisme untuk menjadualkan fungsi untuk dijalankan pada selang masa tertentu. Walau bagaimanapun, pendekatan awal menggunakan berbilang panggilan untuk memulakan() boleh membawa kepada ralat masa jalan.

Untuk menyelesaikan isu ini, adalah disyorkan untuk membuat kelas urutan tersuai, seperti yang ditunjukkan dalam penyelesaian di bawah:

import threading

class MyThread(threading.Thread):
    def __init__(self, event, function):
        threading.Thread.__init__(self)
        self.stopped = event
        self.function = function

    def run(self):
        while not self.stopped.wait(0.5):
            self.function()

Dalam kelas ini, acara yang dihentikan digunakan untuk mengawal pelaksanaan utas. Daripada memulakan dan menghentikan pemasa beberapa kali, utas akan berjalan secara berterusan, menyemak acara yang dihentikan pada selang masa yang tetap. Apabila acara ditetapkan, urutan ditamatkan.

Dalam kod yang memulakan pemasa, anda kemudiannya boleh menggunakan acara yang dihentikan untuk menghentikan pemasa:

stopFlag = threading.Event()
thread = MyThread(stopFlag, function)
thread.start()

# To stop the timer later on
stopFlag.set()

Pendekatan ini menyediakan bersih dan cara yang cekap untuk memulakan, menghentikan dan menetapkan semula pemasa, membolehkan kawalan fleksibel ke atas pelaksanaan fungsi berulang.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Kawalan Ke Atas Mengulang Fungsi Menggunakan Python's Threading.Timer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn