Open
Description
In this test example
from __future__ import print_function
import multiprocessing
import threading
import os
import psutil
from time import sleep
from rx import Observable
# Synchronisable heartbeat
heartbeat = Observable.interval(100).publish()
heartbeat.connect()
heartbeat.subscribe(lambda beat: None )
# Mocks a 50Hz GPS signal
provider = Observable.interval(20) \
.map(lambda i: (24, 24) ) \
.publish()
provider.connect()
heartbeat.with_latest_from(provider, lambda heartbeat, gps: gps) \
.subscribe( lambda combined : None ) # lambda combined: print(combined) )
try:
while True:
sleep(0.1)
process = psutil.Process(os.getpid())
print(str(process.memory_info().rss/1000) + " KB in mem; " + str(threading.active_count()) + " active threads")
except KeyboardInterrupt:
print("Caught KeyboardInterrupt")
which is running in 2.7.15 on Kubuntu 18.04 with RxPy 1.6.1, I'm seeing the memory of this application slowly tick upwards. The output of psutil (and the system profiler) shows memory ticking upwards, while the thread count stays constant at around 9.
Full disclosure - Python is not my usual language, so I may be a missing a language gotcha.
From having a read of an implementation (in Java) of interval I didn't believe that anything here needs to managed for memory growth - Googling on memory management for infinite sequences isn't giving me much either. Is this normal (and my code is badly written) or is there an issue here?
Metadata
Metadata
Assignees
Labels
No labels