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

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

如何在分鐘上使用 datetime.now().strftime() 執(zhí)行具有開始和停止時間的循環(huán)?

如何在分鐘上使用 datetime.now().strftime() 執(zhí)行具有開始和停止時間的循環(huán)?

ITMISS 2021-11-30 17:04:15
我正在創(chuàng)建一個每 5 秒執(zhí)行一次的循環(huán),從 startTime 變量開始,到 stopTime 變量結(jié)束。但是,下面的代碼忽略了我的 startTime 和 endTime 變量中的分鐘數(shù),并且只在小時內(nèi)執(zhí)行。例如,即使我的 startTime 是“1130”,代碼也會在 11:05 執(zhí)行,而不是結(jié)束循環(huán)。我對 endTime 變量有同樣的問題。如果當(dāng)前時間為 12:45,即使 endTime 變量為“1230”,代碼仍會執(zhí)行。代碼將在“1300”處停止執(zhí)行。frequency = 5 startTime = '1130' endTime = '1230' while True:      now = datetime.now().strftime('%H:%M:%S')     if startTime <= now <= endTime:         print('Loop is working. Time is: ',now)         time.sleep(frequency)     else:          print('Loop is stopped')          break我住在中部時間,所以我嘗試通過修改“now”變量來切換到東部時區(qū):now = datetime.now(timezone('US/Eastern')).strftime('%H:%M:%S.%f %Z')但是當(dāng)我使用東部 datetime.now() 用 startTime 和 endTime 替換東部時間時,我仍然遇到同樣的問題。是否可以使用 strftime() 在精確的分鐘內(nèi)執(zhí)行代碼?
查看完整描述

1 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗 獲得超6個贊

如果您想等到例如 11:30 (這是真正的問題), 您可以計算程序應(yīng)該休眠的時間(以秒為單位)(并讓它休眠):


def wait_till(hour, minute, second=0):

    # get system time (and date)

    now_time = datetime.datetime.now()

    # create time point we are waiting for (this year, this month and this day)

    wait_till_time = datetime.datetime(year=now_time.year, month=now_time.month, day=now_time.day, hour=hour, minute=minute, second=second)

    # calculate time we want to wait for and convert to seconds

    wait_for = (wait_till_time - now_time).total_seconds()

    # check if it's going to be tomorrow (if we would sleep for a negative amount of seconds)

    if wait_for < 0:

        # add one day

        wait_till_time = wait_till_time.replace(day=now_time.day+1)

        # recalculate (not very beautiful, but i don't know a better way)

        wait_for = (wait_till_time - now_time).total_seconds()


    # printing this waiting time (in seconds)

    print("waiting for",wait_for,"seconds")

    # sleeping for that time

    time.sleep(wait_for)

    # printing the new now time, so we can see how accurate it is

    print("its now",datetime.datetime.now())

并說例如:


wait_till(20, 24) # waiting till 20:24 (today)

并得到:


waiting for 15.32297 seconds

its now 2019-03-11 20:24:00.003857

這非常接近我們想要的 (20:24:00.000000),而且這種延遲可能只是由格式化字符串的計算滯后引起的。


(老東西……)


如果需要100% 5s并不重要(而是100.04546642303467% --> 每次都會下降一點),您可以這樣做


import time


frequency = 5 #every 5 seconds

start_time = time.time()


while 1:

    elspsed_time = time.time() - start_time

    print(elspsed_time)

    time.sleep(frequency)

但是如果你需要100%你可以試試這個自動更正的解決方案:


import time

from threading import Timer


frequency = 5 #every 5 seconds

start_time = time.time()


def what_to_do_after_5s():

    elapsed_time = time.time() - start_time


    print(elapsed_time)


    # next call

    Timer(5.0 - (elapsed_time - int(elapsed_time)), what_to_do_after_5s, ()).start()


what_to_do_after_5s()

我們可以看到它會自動更正:


0.0

5.000170707702637

10.000272989273071

15.000539064407349

20.001248836517334

25.00046443939209

30.000929355621338

35.00142860412598

40.0007688999176

45.00128436088562

50.00045442581177

55.000683069229126

60.00123882293701

65.00095415115356

70.0015127658844


查看完整回答
反對 回復(fù) 2021-11-30
  • 1 回答
  • 0 關(guān)注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號