سؤال

كيف يمكنني جدولة مؤقت تكرار لمدة 5 دقائق. الذي يطلق النار عند 00 ثانية ، ثم كرر في 00. حسنًا ، ليس في الوقت الفعلي الصعب ولكن في أقرب وقت ممكن مع تأخر SYS. في محاولة لتجنب البناء في التأخر والحصول على 00.

لانج: بيثون ، نظام التشغيل: WinXP X64

النظام لديه دقة 25 مللي ثانية.

أي رمز سيكون مفيدًا ، تيا

هل كانت مفيدة؟

المحلول

لا أعرف كيف أفعل ذلك بدقة أكثر من Througing.timer. إنها "طلقة واحدة" ، ولكن هذا يعني فقط أن الوظيفة التي تحددها بهذه الطريقة يجب أن تعيد جدولة نفسها على الفور لمدة 300 ثانية أخرى ، أول شيء. (يمكنك إضافة دقة عن طريق قياس الوقت الدقيق مع time.time في كل مرة وتغيير تأخير الجدولة التالية وفقًا لذلك).

نصائح أخرى

حاول مقارنة المطبوعات الزمنية لهاتين رمزتين:

رمز عينة 1

import time
delay = 5

while True:
    now = time.time()
    print time.strftime("%H:%M:%S", time.localtime(now))

    # As you will observe, this will take about 2 seconds,
    # making the loop iterate every 5 + 2 seconds or so.
    ## repeat 5000 times
    for i in range(5000):
        sum(range(10000))

    # This will sleep for 5 more seconds
    time.sleep(delay)

رمز عينة 2

import time
delay = 5

while True:
    now = time.time()
    print time.strftime("%H:%M:%S", time.localtime(now))

    # As you will observe, this will take about 2 seconds,
    # but the loop will iterate every 5 seconds because code 
    # execution time was accounted for.
    ## repeat 5000 times
    for i in range(5000):
        sum(range(10000))

    # This will sleep for as long as it takes to get to the
    # next 5-second mark
    time.sleep(delay - (time.time() - now))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top