第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用Python執(zhí)行周期性動作

用Python執(zhí)行周期性動作

慕田峪4524236 2019-07-08 16:37:54
用Python執(zhí)行周期性動作我在做Windows的工作。我想執(zhí)行一個函數(shù)Foo()每10秒一次。我該怎么做?
查看完整描述

3 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

奇怪的是,沒有找到一個解決方案使用發(fā)電機來計時。我只是為了自己的目的設計了這個。


這個解決方案:單線程,沒有對象實例化每一個周期,使用生成器的次數(shù),巖石固體計時下降到精確的time模塊(與我從堆棧交換中嘗試過的幾種解決方案不同)。


注:對于Python2.x,替換next(g)下面有g.next().


import time


def do_every(period,f,*args):

    def g_tick():

        t = time.time()

        count = 0

        while True:

            count += 1

            yield max(t + count*period - time.time(),0)

    g = g_tick()

    while True:

        time.sleep(next(g))

        f(*args)


def hello(s):

    print('hello {} ({:.4f})'.format(s,time.time()))

    time.sleep(.3)


do_every(1,hello,'foo')

例如:


hello foo (1421705487.5811)

hello foo (1421705488.5811)

hello foo (1421705489.5809)

hello foo (1421705490.5830)

hello foo (1421705491.5803)

hello foo (1421705492.5808)

hello foo (1421705493.5811)

hello foo (1421705494.5811)

hello foo (1421705495.5810)

hello foo (1421705496.5811)

hello foo (1421705497.5810)

hello foo (1421705498.5810)

hello foo (1421705499.5809)

hello foo (1421705500.5811)

hello foo (1421705501.5811)

hello foo (1421705502.5811)

hello foo (1421705503.5810)

請注意,此示例包括CPU在每段時間進行3秒鐘的其他操作的模擬。如果你每次都把它改為隨機的,那就無所謂了。中的最大值yield線起保護作用sleep如果調用函數(shù)的時間比指定的時間長,則從負數(shù)開始。在這種情況下,它將立即執(zhí)行,并在下一次執(zhí)行的時間上彌補所損失的時間。


查看完整回答
反對 回復 2019-07-08
  • 3 回答
  • 0 關注
  • 1176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號