掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
源碼: Lib/sched.py

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,密云企業(yè)網(wǎng)站建設,密云品牌網(wǎng)站建設,網(wǎng)站定制,密云網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,密云網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
sched 模塊定義了一個實現(xiàn)通用事件調度程序的類:
class sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)
scheduler 類定義了一個調度事件的通用接口。 它需要兩個函數(shù)來實際處理“外部世界” —— timefunc 應當不帶參數(shù)地調用,并返回一個數(shù)字(“時間”,可以為任意單位)。 delayfunc 函數(shù)應當帶一個參數(shù)調用,與 timefunc 的輸出相兼容,并且應當延遲其所指定的時間單位。 每個事件運行后還將調用 delayfunc 并傳入?yún)?shù) 0 以允許其他線程有機會在多線程應用中運行。
在 3.3 版更改: timefunc 和 delayfunc 參數(shù)是可選的。
在 3.3 版更改: scheduler 類可以安全的在多線程環(huán)境中使用。
示例:
>>> import sched, time>>> s = sched.scheduler(time.time, time.sleep)>>> def print_time(a='default'):... print("From print_time", time.time(), a)...>>> def print_some_times():... print(time.time())... s.enter(10, 1, print_time)... s.enter(5, 2, print_time, argument=('positional',))... s.enter(5, 1, print_time, kwargs={'a': 'keyword'})... s.run()... print(time.time())...>>> print_some_times()930343690.257From print_time 930343695.274 positionalFrom print_time 930343695.275 keywordFrom print_time 930343700.273 default930343700.276
scheduler 實例擁有以下方法和屬性:
scheduler.enterabs(time, priority, action, argument=(), kwargs={})
安排一個新事件。 time 參數(shù)應該有一個數(shù)字類型兼容的返回值,與傳遞給構造函數(shù)的 timefunc 函數(shù)的返回值兼容。 計劃在相同 time 的事件將按其 priority 的順序執(zhí)行。 數(shù)字越小表示優(yōu)先級越高。
執(zhí)行事件意為執(zhí)行 action(*argument, **kwargs)。 argument 是包含有 action 的位置參數(shù)的序列。 kwargs 是包含 action 的關鍵字參數(shù)的字典。
返回值是一個事件,可用于以后取消事件( 參見 cancel() )。
在 3.3 版更改: argument 參數(shù)是可選的。
在 3.3 版更改: 添加了 kwargs 形參。
scheduler.enter(delay, priority, action, argument=(), kwargs={})
安排延后 delay 時間單位的事件。 除了時間是相對的,其他參數(shù)、效果和返回值與 enterabs() 相同。
在 3.3 版更改: argument 參數(shù)是可選的。
在 3.3 版更改: 添加了 kwargs 形參。
scheduler.cancel(event)
從隊列中刪除事件。 如果 event 不是當前隊列中的事件,則此方法將引發(fā) ValueError。
scheduler.empty()
如果事件隊列為空則返回 True。
scheduler.run(blocking=True)
運行所有預定事件。 此方法將等待(使用傳遞給構造函數(shù)的 delayfunc() 函數(shù))進行下一個事件,然后執(zhí)行它,依此類推,直到?jīng)]有更多的計劃事件。
如果 blocking 為false,則執(zhí)行最快到期(如果有)的預定事件,然后在調度程序中返回下一個預定調用的截止時間(如果有)。
action 或 delayfunc 都可以引發(fā)異常。 在任何一種情況下,調度程序都將保持一致狀態(tài)并傳播異常。 如果 action 引發(fā)異常,則在將來調用 run() 時不會嘗試該事件。
如果一系列事件的運行時間大于下一個事件發(fā)生前的可用時間,那么調度程序只會保持落后。 沒有事件會被丟棄;調用代碼負責取消不再相關的事件。
在 3.3 版更改: 添加了 blocking 形參。
scheduler.queue
只讀屬性,按照計劃運行的順序返回即將發(fā)生的事件列表。 每個事件都顯示為 named tuple ,包含以下字段:time、priority、action、argument、kwargs。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流