为什么这个不同的RxPY可观测量列表总是发出同样的东西?

时间:2017-10-24 14:09:57

标签: python reactivex rx-py

使用列表推导我创建了一个包含10个不同可观察量的列表。然而,尽管他们的时间不同,他们总是打印相同的东西(" ticker_9")。

from __future__ import print_function

from rx import Observable
import IPython

n_tickers = 10
tickers = ["ticker_" + str(x) for x in range(n_tickers)]
olist = [Observable.interval(x * 100 + 10).map(lambda _: tickers[x]) for x in range(n_tickers)]
IPython.embed()

所以这样做首先是创建一个包含10个代码的列表,名为ticker_0到ticker_9。然后,它使用列表推导来创建10个可观察量,这些可观察量以100毫秒(加10)的倍数增加。每个可观察者(应该)发出不同的自动收报机。但是它们都发出ticker_9(即列表中的最后一个自动收录器),即使列表解析中的x变量被识别,因为它们以不同的频率发射。

这里发生了什么?为什么我没有获得olist [0]的ticker_0,olist [1]等的ticker_1?

观察:

In [1]: olist[0].subscribe(lambda s: print(s))
Out[1]: <rx.disposables.anonymousdisposable.AnonymousDisposable at 0xb60eaf30>
ticker_9

In [2]: ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9

或者:

In [1]: olist[5].subscribe(lambda s: print(s))
Out[1]: <rx.disposables.anonymousdisposable.AnonymousDisposable at 0xb60c0f30>

In [2]: ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9

......同样的事情即。 ticker_9整个时间。应该是ticker_0和ticker_5,即使在第二种情况下,排放 的速度要慢得多。

为什么我的列表理解不能为每个observable创建不同的ticker_x,即使 在该时间间隔内工作?

0 个答案:

没有答案