gpt4 book ai didi

python - python3中的消息缓冲区表示

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:37 25 4
gpt4 key购买 nike

想象有一个盒子A。在这个盒子中,我们每1秒添加一定数量的消息(示例中为3/秒),消息的信息与存储无关。这些消息有一个过期“日期”,它对应于已经过去的一定秒数。 如何在 python3 中以紧凑的方式表示它?

下面描述了将发生的情况的一个示例,其中我在框 A 中使用消息列表,其中每条消息由其“事件”的时间表示(这是我想到的表示之一,但努力做得更好):

time = 0:
empty

time = 1:
[0,0,0]

time = 2:
[1,1,1,0,0,0]

time = 3:
[2,2,2,1,1,1,0,0,0]
...

消息将有一个与它们离开缓冲区的时刻相对应的过期时间。例如,如果“存活”时间超过 5,它们将被删除。

目标是能够通过简单的计算传递多个时间步,并且能够计算最终缓冲区,而无需一次执行一步。 (例如从时间 = 3 到时间 = 9)

我问这个问题的原因是因为它不仅仅是 1 个“盒子”,而是多个盒子,每个盒子都会为每个其他盒子提供一个缓冲区。所以它需要尽可能简单。如果需要任何澄清,请在下面发表评论,我很乐意澄清问题。

最佳答案

最终答案将取决于总体规模、每个框中缓冲区数量的可变性、框数、秒数。具有大量变化的对象表示可能是一个优势,但如果事情相对简单,那么列表列表将是一个好的开始。

如果每秒存储的值的数量始终为 3,那么您可以保留一个平面列表,并仅使用 maxlength * 3 来丢弃过期的值。以下假设值的数量有所不同。

time = 0:
[]

time = 1:
[[0,0,0]]

time = 2:
[[1,1,1],[0,0,0]]

time = 3:
[[2,2,2],[1,1,1],[0,0,0]]

要添加到列表的前面,然后将列表截断到最大长度(如果较短,则不会导致错误)

buffer.insert(0, new_values_list)
del buffer[maxlen:]

最后,如果您在使用时需要再次扁平化列表。

import itertools
flat_buffer = list(itertools.chain.from_iterable(buffer))

如前所述,您可能希望使用对象来组织事物,例如将 box 放入类中。

关于python - python3中的消息缓冲区表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57124358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com