Observable
クラスの例として、特定の株式ティッカーの現在の価格を発行するホットを作成する最も堅牢な方法を見つけようとしていますが、変更されたときにのみ価格を発行します。私が自分で思いついた最善の方法は、 Observable
Google Finance に 3 秒ごとにクエリを実行し、価格を解析し、値が を介して変更された場合にのみそれをプッシュする間隔ソースを作成することですdistinct_until_changed()
。
from threading import Semaphore
from rx import Observable
from googlefinance import getQuotes
import json
Observable.interval(3000) \
.map(lambda i: json.dumps(getQuotes('AAPL'))) \
.map(lambda s: json.loads(s)[0]) \
.map(lambda dict: float(dict["LastTradePrice"])) \
.distinct_until_changed() \
.subscribe(print)
sema = Semaphore(0)
sema.acquire()
これを行うためのより効率的な方法を知っている人はいますか?間隔を空けて再クエリする必要はありませんが、価格が実際に変化したときにソースをトリガーしますか? 非常に複雑で特殊なライブラリが必要な場合は、私が持っているものを使い続けます。これを行うためのはるかに良い方法が欠けているように感じます...