4
説明のためにRxPYを使用しています。、Observer.createに他のパラメータを渡すにはどうしたらいいですか?
私は関数からオブザーバブルを作成したいが、その関数はパラメータを取らなければならない。この特定の例は、ランダムな間隔で、私がそれに送るたくさんのあらかじめ定義されたティッカーの1つを返す必要があります。これまでの私の解決策は、クロージャを使用することです:
from __future__ import print_function
from rx import Observable
import random
import string
import time
def make_tickers(n = 300, s = 123):
""" generates up to n unique 3-letter strings geach makde up of uppsercase letters"""
random.seed(s)
tickers = [''.join(random.choice(string.ascii_uppercase) for _ in range(3)) for y in range(n)]
tickers = list(set(tickers)) # unique
print(len(tickers))
return(tickers)
def spawn_prices_fn(tickers):
""" returns a function that will return a random element
out of tickers every 20-100 ms, and takes an observable parameter """
def spawner(observer):
while True:
next_tick = random.choice(tickers)
observer.on_next(next_tick)
time.sleep(random.randint(20, 100)/1000.0)
return(spawner)
if __name__ == "__main__":
spawned = spawn_prices_fn(make_tickers())
xx = Observable.create(spawned)
xx.subscribe(lambda s: print(s))
もっと簡単な方法はありますか?クロージャを必要としないObservable.createの最初のパラメタ関数にさらにパラメータを送ることはできますか?標準的なアドバイスは何ですか?
あなたはどのようなパターンを期待していますか?任意の擬似コード –