def example_2(): def f(list_of_lists): return [[v * v for v in list_of_lists[0]]] x = Stream("x") y = many_to_many_stateless(f, [x], 1)[0] x.extend([5, 11]) print_stream_recent(x) print_stream_recent(y) return
def example_1(): print "example_1" print "Calling signature:" print "many_to_many_stateless(f, in_streams, num_out_streams, state=None, call_streams=None)" print "Returns a list of num_out_streams streams." print "in_streams is a list of streams." print "List function: f(lists) where lists is a list of lists. " print "f() returns a list of num_out_streams lists. \n" print "In this example, many_to_many_stateless() returns two streams: multiples and nonmultiples." print "The input streams are summed element by element;" print "if this sum is a multiple of factor(=2), then the sum appears in multiples" print "and otherwise it appears in nonmultiples." print "The input streams are x and y." factor = 2 def f(lists): r = map(sum, zip(*lists)) return [filter(lambda v: v % factor == 0, r), filter(lambda v: v % factor != 0, r)] x = Stream("x") y = Stream("y") list_of_two_streams = many_to_many_stateless(f, [x, y]) multiples, nonmultiples = list_of_two_streams multiples.set_name("multiples") nonmultiples.set_name("nonmultiples") x.extend([5, 11]) y.extend([2, 4, 5]) print "" print "FIRST STEP" # Element by element sum of x and y is [5+2, 11+4]. # Since these values are odd, they appear in nonmultiples, # and multiples is empty. print_streams_recent([x, y, multiples, nonmultiples]) print "" print "SECOND STEP" x.extend([9, 15, 19, 8, 20]) y.extend([1, 3, 7]) print_streams_recent([x, y, multiples, nonmultiples]) return