مع Python: فترات في X: 00 كرر
سؤال
كيف يمكنني جدولة مؤقت تكرار لمدة 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))
لا تنتمي إلى StackOverflow