[英]Interruptable Sleep?
我目前正在構建一個 python 應用程序,它應該在用戶輸入的給定時間戳(不是按時間順序輸入)觸發函數。
我遇到了一個問題,因為我不希望我的程序忙於檢查是否輸入了必須添加到計時器隊列中的新時間戳,但也不希望在每次出現新時間戳時都創建一大堆線程創建的唯一目的是等待該時間戳。
我想到的是將它們放在一個線程中並做一些類似可中斷睡眠的事情,但除此之外我想不出另一種方式:
while timer_not_depleted:
sleep(1)
if something_happened:
break
這基本上是忙等待。 那么有什么關於實現可中斷睡眠的建議嗎?
您使用線程的直覺是正確的。 以下 master-worker 結構可以工作:
Queue
——每當需要調度新作業時,主線程put
作業規范放入隊列;Queue.get(block=True, timeout=<time-to-next-job>)
繼續偵聽新作業;Queue.get
將引發Empty
異常 - 此時工作線程應該運行已調度的函數並返回輪詢。 如果一個新的作業在此期間預定, Queue.get
返回新的工作,這樣你可以更新timeout
值,然后回到等待。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.