首页 > 解决方案 > 如何在python中对流进行部分分区?

问题描述

我正在处理一个数据流(以块为单位,即缓冲),并希望将其任意部分发送到一个流,其余部分发送到第二个流。

例如,假设总列表的长度为 20。如果列表的 15% 需要进入第一个输出列表,那么最终第一个列表中应该有 3 个项目,而另一个列表中应该有 17 个项目。如果我正在处理大小为 5 的块的列表,那么我想将大约一个项目块发送到第一个流,但一次发送零个项目。在 4 个块中,我会将 1+1+1+0 = 3 个项目发送到第一个列表。

如果列表足够大,那么依靠大数定律并随机选择每个项目的发送位置似乎是合适的。鉴于它不会总是如此,我所能想到的就是维护两个计数器并根据它如何影响当前比率(“控制”到所需比率)来决定将每个项目发送到哪里。这是最好的方法吗?

partition使用我目前的方法,当 Itertools Recipes 中的任何一个或grouper来自Itertools Recipes似乎是我需要的更通用的起点时,我将编写一些自定义逻辑。

标签: pythonstreambufferchunking

解决方案


推荐阅读