簡體   English   中英

記錄過去分鍾事件的最有效方法

[英]Most efficient way to keep count of past minute events

我需要一個過去X MINUTES中發生的特定事件的實時計數器。

下面的偽代碼完成了我想做的事情,但是效率很低。 如果我將WINDOW 10分鍾(600秒),並且發生了很多事件,那么下面的代碼將變得難以運行!

import time
import random

WINDOW = 20 #time, in seconds, for which we want to sum events before they expire

event = list()

while True:
    #REMOVE FROM THE `event` list the elements more than 20 seconds old
    event = [i for i in event if i+WINDOW>time.time()]

    # Randomly make events happen
    if random.randint(1,100)<50:
        event.append((time.time()))
    time.sleep(.5)

    #Once every 10 seconds, print on screen the number of events that happened in the past 20 seconds
    if round(time.time()) % 10 ==0:
        print(f'We have {len(event)} events in the past {WINDOW} seconds')
        time.sleep(1)

嘗試反向迭代並在找到第一個舊事件時剪切列表:

tim=time.time()  # called only once
for idx in range(len(events)-1,-1,-1):
    if events[idx]+WINDOW<= tim:
        events[:idx+1]=""
        break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM