App performance#
[1]:
import os
import sys
import numpy as np
import psutil
sys.path.insert(0, os.path.realpath('../'))
import LDAQ
[2]:
# ------------------------------------------
# Create simulated data acquisition sources:
# ------------------------------------------
acq_simulated_data = LDAQ.simulator.SimulatedAcquisition(acquisition_name='PerformanceTracker')
[3]:
# define simulated data using a function:
def retrieve_memory_and_cpu(t):
"""
first argument must be time.
If multi_processing is True, then the function must be pickable and
all libraries must be imported inside the function.
"""
if t.shape[0] > 0:
pid = psutil.Process(os.getpid())
memory_usage = pid.memory_info().rss / 1024**2 # B
cpu_usage = pid.cpu_percent(interval=0.1)
#memory_usage = 1
data = np.array([memory_usage, cpu_usage] * t.shape[0] ).reshape((-1, 2))
else:
data = np.empty((0, 2))
return data
[4]:
# set simulated data (first argument is the function or array):
acq_simulated_data.set_simulated_data(retrieve_memory_and_cpu, channel_names=["memory", "CPU"], sample_rate=1., args=())
[5]:
# ------------------------------------------
# create simulated video acquisition source:
# ------------------------------------------
acq_simulated_video = LDAQ.simulator.SimulatedAcquisition(acquisition_name='sim_video')
[6]:
# define simulated video using numpy array:
fs = 30
simulated_video = np.random.randn(1000, 100, 100)
[7]:
acq_simulated_video.set_simulated_video(simulated_video, channel_name_video='cam', sample_rate=fs) # use array
[8]:
# ----------------------------
# Create visulaization object:
# ----------------------------
vis = LDAQ.Visualization(sequential_plot_updates=False)
vis.add_lines((0,0), source='PerformanceTracker', channels=["memory"], refresh_rate=1000, nth=1)
vis.add_lines((1,0), source='PerformanceTracker', channels=["CPU"], refresh_rate=1000, nth=1)
vis.add_image(source="sim_video", channel="cam", refresh_rate=30)
vis.config_subplot((0,0), t_span=1000)
vis.config_subplot((1,0), t_span=1000)
[9]:
ldaq = LDAQ.Core(acquisitions=[acq_simulated_data, acq_simulated_video], visualization=vis)
#ldaq = LDAQ.Core(acquisitions=[acq_simulated_video], visualization=vis)
#ldaq = LDAQ.Core(acquisitions=[acq_simulated_data], visualization=vis)
ldaq.run(3.)
[ ]:
memory_usage = psutil.Process(os.getpid()).memory_info().rss / 1024**2 # B
[ ]:
ldaq.get_measurement_dict()