【发布时间】:2011-02-14 05:19:10
【问题描述】:
这里有一些代码应该展示我正在尝试做的事情:
current_time = datetime.datetime.now()
recently_seen = []
user_id = 10
while True:
if user_id not in recently_seen:
recently_seen[user_id] = current_time
print 'seen {0}'.format(user_id)
else:
if current_time - recently_seen[user_id] > '5 seconds':
recently_seen[user_id] = current_time
print 'seen {0}'.format(user_id)
time.sleep(0.1)
基本上,我的程序正在为用户侦听套接字。这被包裹在一个循环中,当它看到它们时会吐出user_ids。这意味着,我每隔几毫秒就会看到一次 user_id。
我想要做的是记录它看到的用户以及在什么时间。说它在 0.1 秒看到一个用户,然后在 0.7 秒又看到一个用户是愚蠢的。所以我想实现一个 5 秒的缓冲区。
它应该找到一个用户,如果在 5 秒内没有看到该用户,则将其记录到数据库中。
我想出的两个解决方案是:
1) 将 user_id 保存在字典中(类似于上面的示例代码)并检查。问题是,如果它运行了几天并继续寻找新用户,这最终会耗尽我的内存 2)将它们记录到数据库并检查。问题在于,它每隔几毫秒就会找到用户。我不想每隔几毫秒读取一次数据库...
我需要一些方法来创建一个有限大小的列表。该限制将是 5 秒。关于如何实现这一点的任何想法?
【问题讨论】:
标签: python list dictionary time login