interp = interpreters.create()
r, s = interpreters.create_fifo()
interp.run(tw.dedent("""
    import marshal
    """),
    shared=dict(
        reader=r,
        ),
    )
def run():
    interp.run(tw.dedent("""
        data = reader.recv()
        while data:
            obj = marshal.loads(data)
            do_something(obj)
            data = reader.recv()
        reader.close()
        """))
t = threading.Thread(target=run)
t.start()
for obj in input:
    data = marshal.dumps(obj)
    s.send(data)
s.send(None)
