def main(): def print_stream_recent(s): print s.name, " = ", s.recent[:s.stop] y_stream = Stream('y stream') z_stream = stream_func('list', mean_list, y_stream, 1, (0,0)) #z_stream = averages_stream(y_stream) z_stream.set_name('z') print_stream_recent(z_stream) y_stream.extend([3, 5]) print_stream_recent(z_stream) y_stream.extend([1, 11]) print_stream_recent(z_stream)
def averages_stream(input_stream): # List function: list, state -> list, state def averages_list(input_list, state): number_of_values, sum_of_values = state output_list = [0.0] * len(input_list) for i,v in enumerate(input_list): sum_of_values += v number_of_values += 1 output_list[i] = sum_of_values/float(number_of_values) state = number_of_values, sum_of_values return (output_list, state) return stream_func( list_func=averages_list, inputs=input_stream, num_outputs=1, state=(0, 0.0), call_streams=None)