def client_loop( assembler: tube.ChannelAssembler, start_time: float, context: tube.Context, execution_params: ExecutionParams, ) -> None: assembler.start() max_time = execution_params.max_time while max_time is None or time.time() < start_time + max_time: time.sleep(60) print("Resource usage:") print(utils.get_res_usage_str()) print("Context stats:") print(context.get_stats_str())
def warm_up_replay_buffer( assembler: tube.ChannelAssembler, replay_warmup: int, replay_buffer: Optional[bytes] ) -> None: if replay_buffer is not None: print("loading replay buffer...") assembler.buffer = replay_buffer assembler.start() prev_buffer_size = -1 t = t_init = time.time() t0 = -1 size0 = 0 while assembler.buffer_size() < replay_warmup: buffer_size = assembler.buffer_size() if buffer_size != prev_buffer_size: # avoid flooding stdout if buffer_size > 10000 and t0 == -1: size0 = buffer_size t0 = time.time() prev_buffer_size = max(prev_buffer_size, 0) frame_rate = (buffer_size - prev_buffer_size) / (time.time() - t) frame_rate = int(frame_rate) prev_buffer_size = buffer_size t = time.time() duration = t - t_init print( f"warming-up replay buffer: {(buffer_size * 100) // replay_warmup}% " f"({buffer_size}/{replay_warmup}) in {duration:.2f}s " f"- speed: {frame_rate} frames/s", end="\r", flush=True, ) time.sleep(2) print( f"replay buffer warmed up: 100% " f"({assembler.buffer_size()}/{replay_warmup})" " " ) print( "avg speed: %.2f frames/s" % ((assembler.buffer_size() - size0) / (time.time() - t0)) )