설명을 위해 RxPY 사용., Observer.create에 다른 매개 변수를 전달하려면 어떻게해야합니까?
함수에서 관측 가능 함수를 만들고 싶지만이 함수는 매개 변수를 가져야합니다. 이 특정 예제는 임의의 간격으로, 내가 보내고 자하는 미리 정의 된 많은 시세 중 하나를 반환해야합니다. 지금까지의 해결 방법은 클로저를 사용하는 것입니다.
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의 첫 번째 매개 변수 함수에 추가 매개 변수를 보낼 수 있습니까? 정식 조언은 무엇입니까?
어떤 패턴을 기대합니까? 임의의 의사 코드 –