国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python標(biāo)準(zhǔn)庫sched模塊使用指南

2020-02-16 01:48:05
字體:
供稿:網(wǎng)友

事件調(diào)度

sched 模塊內(nèi)容很簡單,只定義了一個(gè)類。它用來最為一個(gè)通用的事件調(diào)度模塊。

class sched.scheduler(timefunc, delayfunc) 這個(gè)類定義了調(diào)度事件的通用接口,它需要外部傳入兩個(gè)參數(shù), timefunc 是一個(gè)沒有參數(shù)的返回時(shí)間類型數(shù)字的函數(shù)(常用使用的如time模塊里面的time), delayfunc 應(yīng)該是一個(gè)需要一個(gè)參數(shù)來調(diào)用、與timefunc的輸出兼容、并且作用為延遲多個(gè)時(shí)間單位的函數(shù)(常用的如time模塊的sleep)。

下面是一個(gè)列子:

import sched, times = sched.scheduler(time.time, time.sleep) # 生成調(diào)度器def print_time():print "From print_time", time.time()def print_some_times():print time.time()s.enter(5, 1, print_time, ()) # 加入調(diào)度事件# 四個(gè)參數(shù)分別是:# 間隔事件(具體值決定與delayfunc, 這里為秒);# 優(yōu)先級(兩個(gè)事件在同一時(shí)間到達(dá)的情況);# 觸發(fā)的函數(shù);# 函數(shù)參數(shù);s.enter(10, 1, print_time, ())# 運(yùn)行s.run()print time.time()if __name__ == '__main__':print_some_times()

看到的輸出結(jié)果,隔5秒中執(zhí)行第一個(gè)事件,隔10秒后執(zhí)行第二個(gè)事件:

1499259731.99From print_time 1499259736.99From print_time 1499259741.991499259741.99

在多線程場景中,會(huì)有線程安全問題,run()函數(shù)會(huì)阻塞主線程。官方建議使用 threading.Timer 類代替:

import timefrom threading import Timerdef print_time():print "From print_time", time.time()def print_some_times():print time.time()Timer(5, print_time, ()).start()Timer(10, print_time, ()).start()time.sleep(11) # 阻塞主線程,等待調(diào)度程序執(zhí)行完畢,再執(zhí)行后面內(nèi)容print time.time()if __name__ == '__main__':print_some_times()

Scheduler對象方法

scheduler對象擁有下面這些方法或?qū)傩?

scheduler.enterabs(time, priority, action, argument)

加入一個(gè)事件, time 參數(shù)應(yīng)該是一個(gè)與傳遞給構(gòu)造函數(shù)的 timefunc 函數(shù)的返回值相兼容的數(shù)值類型。在同一時(shí)間到達(dá)的事件將按照 priority 順序執(zhí)行。

執(zhí)行事件其實(shí)就是執(zhí)行 action(argument) 。argument必須是一個(gè)包含 action 參數(shù)的序列。

返回值是一個(gè)事件,它可以用于稍后取消事件(請參見 cancel() )。

scheduler.enter(delay, priority, action, argument)

安排一個(gè)事件來延遲 delay 個(gè)時(shí)間單位。除了時(shí)間外,其他參數(shù)、含義和返回值與 enterabs() 的值相同。其實(shí)內(nèi)部 enterabs 就是用來被 enter 調(diào)用。

scheduler.cancel(event)

從隊(duì)列中刪除事件。如果事件不是當(dāng)前隊(duì)列中的事件,則該方法將跑出一個(gè) ValueError 。

scheduler.empty()

判斷隊(duì)列是否為空。

scheduler.run()

運(yùn)行所有預(yù)定的事件。這個(gè)函數(shù)將等待(使用傳遞給構(gòu)造函數(shù)的 delayfunc() 函數(shù)),然后執(zhí)行事件,直到不再有預(yù)定的事件。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 定安县| 中卫市| 温州市| 喀喇沁旗| 奈曼旗| 五指山市| 汝城县| 张家口市| 十堰市| 荃湾区| 民县| 丽江市| 米易县| 鞍山市| 奉贤区| 乳源| 紫金县| 汉阴县| 屏南县| 宁安市| 山东省| 宜都市| 潜江市| 黄大仙区| 榕江县| 徐汇区| 宁南县| 张家港市| 江孜县| 新营市| 高清| 拜泉县| 昌乐县| 峨眉山市| 昌平区| 墨江| 无极县| 绿春县| 余江县| 丰镇市| 东阿县|