ReactiveXのコード読んでないので理由不明ですが、reactivex.timer()
はdue timeにdatetime.datetime型を指定した場合、値を出さない。GIL
とかasyncioという話でもなさそう。
import datetime
import reactivex as rx
import time
import asyncio
dtStart = datetime.datetime.now() + datetime.timedelta(seconds=10)
rx.timer(dtStart, 5).subscribe(
on_next = lambda value: print(value), # 呼ばれない
on_completed = lambda: print('completed'),
on_error = lambda ex: print(ex)
)
time.sleep(30)
# asyncio.run(asyncio.sleep(30)) # こちらでも同じなので、GILのせいではなさそう
回避策として、due timeから現時刻を引き算して渡す。rx.timer(dtStart - datetime.datetime.now(), 5) # これは値を出す環境
- WinPython 3.12.2 64bit
- reactivex 4.0.4















Comments