【发布时间】:2019-07-20 11:40:39
【问题描述】:
想象有一个盒子 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,它们将被删除。
目标是能够通过简单的计算通过多个时间步,并且能够计算最终缓冲区,而无需一次执行 1 步。 (例如,从时间 = 3 到时间 = 9)
我问这个的原因是因为它不会只有 1 个“盒子”,它会是几个盒子,每个盒子都会有一个用于其他盒子的缓冲区。所以它需要尽可能简单。如果需要任何澄清,请在下面发表评论,我很乐意澄清问题。
【问题讨论】:
-
当前的表示有什么问题?
-
在
time=3中删除了在time=2添加的1值之一。那是故意的吗?如果有,为什么? -
@Deepstop 不是,我编辑了,谢谢。
-
@vekerdyb 我还没有完全编程。在我看来,问题是,首先,缓冲区会很大,并且删除/添加到缓冲区会很重。其次,由于我不需要存储有关每条消息的任何信息,因此我认为可以在它们在网络中那么远的时候对它们进行分组。也许就像说时间 = 4 的 5 条消息,时间 = 5 的 10 条消息,......但是“时间”必须很容易改变。例如,以时间为键的字典不起作用,因为每次有变量“时间”更新时我都必须更改所有条目。
-
对我来说这听起来像是一个过早的优化问题。我建议您开始开发应用程序,如果您确实遇到性能问题,请三思。如果您有具体问题需要解决,我们将能够提供更好的帮助。
标签: python python-3.x data-representation