从ReactiveX Observable批处理结果

时间:2017-08-26 22:03:41

标签: reactivex rx-py

假设我有一个看起来像这样的observable(这是Python,但应该适用于所有语言):

batch_function([1,2,3,4,5]) batch_function([6,7,8,9,10])

我希望最终能够将Integers批处理为长度为5的列表,并能够将它们传递给函数,所以像这样:

batch_function

实际上,传入的数据将是(可能为空的)列表的无限流。我只是想确保在我累积5个实际值之前,我之后的{{1}}来电。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

以下代码段正在使用buffer_with_count为我工作。我不确定是否有一种更简约的方法,即没有flat_map

BUFFER_COUNT=5
rx.Observable.from_iterable(iter(get_items())) \
  .flat_map(lambda it: it) \
  .buffer_with_count(BUFFER_COUNT) \
  .map(lambda my_array: do_something_with(my_array)) \
  .subscribe(lambda it: print(it))