मैं इसका उपयोग प्रति मिनट के बाद एक ही नंबर पर होने वाली अधिकांश घटनाओं के साथ प्रति घंटे 60 घटनाओं का कारण बनता हूं:
import math
import time
import random
TICK = 60 # one minute tick size
TICK_TIMING = 59 # execute on 59th second of the tick
TICK_MINIMUM = 30 # minimum catch up tick size when lagging
def set_timing():
now = time.time()
elapsed = now - info['begin']
minutes = math.floor(elapsed/TICK)
tick_elapsed = now - info['completion_time']
if (info['tick']+1) > minutes:
wait = max(0,(TICK_TIMING-(time.time() % TICK)))
print ('standard wait: %.2f' % wait)
time.sleep(wait)
elif tick_elapsed < TICK_MINIMUM:
wait = TICK_MINIMUM-tick_elapsed
print ('minimum wait: %.2f' % wait)
time.sleep(wait)
else:
print ('skip set_timing(); no wait')
drift = ((time.time() - info['begin']) - info['tick']*TICK -
TICK_TIMING + info['begin']%TICK)
print ('drift: %.6f' % drift)
info['tick'] = 0
info['begin'] = time.time()
info['completion_time'] = info['begin'] - TICK
while 1:
set_timing()
print('hello world')
#random real world event
time.sleep(random.random()*TICK_MINIMUM)
info['tick'] += 1
info['completion_time'] = time.time()
वास्तविक स्थितियों के आधार पर आपको लंबाई के टिक मिल सकते हैं:
60,60,62,58,60,60,120,30,30,60,60,60,60,60...etc.
लेकिन 60 मिनट के अंत में आपके पास 60 टिक होंगे; और उनमें से अधिकांश सही ऑफसेट पर आपके द्वारा पसंद किए जाने वाले मिनट में घटित होंगे।
जब तक सुधार की आवश्यकता नहीं होती है, तब तक मेरे सिस्टम पर मुझे एक सेकंड का </ 20 वां बहाव मिलता है।
इस पद्धति का लाभ घड़ी के बहाव का संकल्प है; यदि आप प्रति टिक के एक आइटम को जोड़ने जैसी चीजें कर रहे हैं, तो आपको समस्या हो सकती है और आपको प्रति घंटे 60 आइटम संलग्न होने की उम्मीद है। बहाव के लिए खाते में विफलता माध्यमिक संकेतों का कारण बन सकती है जैसे डेटा को औसत रूप से अतीत में गहराई से विचार करने के लिए चलती है जिसके परिणामस्वरूप दोषपूर्ण आउटपुट होता है।