首頁 >後端開發 >Python教學 >如何在不出現 Cron 作業或資源耗盡的情況下重複執行 Python 函數?

如何在不出現 Cron 作業或資源耗盡的情況下重複執行 Python 函數?

Patricia Arquette
Patricia Arquette原創
2024-12-18 21:36:18281瀏覽

How to Repeatedly Execute a Python Function Without a Cron Job or Resource Exhaustion?

如何在沒有Cron 的情況下重複執行函數

Python 愛好者經常面臨以指定時間間隔永久執行函數而不需要複雜的cron 設定。一個簡單的方法是利用簡單的 while 迴圈。

while True:
    # Code executed here
    time.sleep(60)

此程式碼似乎旨在每 60 秒連續執行一個函數。然而,這種方法存在潛在的陷阱。由於循環不斷運行,存在資源耗盡的風險,導致效能下降或系統崩潰。

要優雅地解決這些問題,請考慮使用事件調度程序,例如 Python 中的 sched 模組。

import sched, time

def do_something(scheduler):
    # schedule the next call first
    scheduler.enter(60, 1, do_something, (scheduler,))
    print("Doing stuff...")
    # then do your stuff

my_scheduler = sched.scheduler(time.time, time.sleep)
my_scheduler.enter(60, 1, do_something, (my_scheduler,))
my_scheduler.run()

sched 模組可以透過對任務執行時間的複雜控制來調度任務。在這種情況下,do_something() 會充當回調函數,每 60 秒重新安排一次並同時執行預期任務。這種機制確保函數按照指定的時間間隔連續執行,而不會妨礙程式的反應能力。

從本質上講,利用事件調度程序為 Python 中重複執行函數提供了更健壯且資源高效的解決方案,而不受 while 的限制循環。

以上是如何在不出現 Cron 作業或資源耗盡的情況下重複執行 Python 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn