有没有什么好主意来衡量用户在队列中等待的时间? (Python)
Is there any good idea to measure a time of user waited in queue? (Python)
我正在使用 Python 制作配对系统,我需要测量用户在队列中等待的时间。
有没有更好的优化计数时间的方法?
我使用 Thread 编写了这样的代码。这是我的代码的一部分。
from threading import Thread
from time import sleep
class Matchmaking:
def __init__(self):
self._queue = Queue()
self.timer = Thread(target=self._update_pending_time)
self.timer.start()
self.timer.join
def _update_pending_time(self):
sleep(1)
# get_user_in_queue() returns DataFrame
if not self._queue.get_user_in_queue().empty:
self.waited_times = self._queue.get_user_in_queue().loc[:, "pending_time"] + 1
正如@deceze 评论的那样,只需保存用户进入队列时的时间戳。
请注意,如果您在用户到达后立即将其推送到队列中,他们将按队列中的时间排序。在这种情况下,您可以使用 FIFO 队列来提取总是 de 早到的用户。
但是,如果您想构建一个具有某种智能的配对系统,并考虑到队列时间以外的其他因素(用户级别、地理区域...),请考虑到您不应该使用队列但更复杂的东西。
我正在使用 Python 制作配对系统,我需要测量用户在队列中等待的时间。
有没有更好的优化计数时间的方法?
我使用 Thread 编写了这样的代码。这是我的代码的一部分。
from threading import Thread
from time import sleep
class Matchmaking:
def __init__(self):
self._queue = Queue()
self.timer = Thread(target=self._update_pending_time)
self.timer.start()
self.timer.join
def _update_pending_time(self):
sleep(1)
# get_user_in_queue() returns DataFrame
if not self._queue.get_user_in_queue().empty:
self.waited_times = self._queue.get_user_in_queue().loc[:, "pending_time"] + 1
正如@deceze 评论的那样,只需保存用户进入队列时的时间戳。
请注意,如果您在用户到达后立即将其推送到队列中,他们将按队列中的时间排序。在这种情况下,您可以使用 FIFO 队列来提取总是 de 早到的用户。
但是,如果您想构建一个具有某种智能的配对系统,并考虑到队列时间以外的其他因素(用户级别、地理区域...),请考虑到您不应该使用队列但更复杂的东西。