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