from multiprocessing import * latin = str SENTINEL = latin('') def _echo(conn): for msg in iter(conn.recv_bytes, SENTINEL): conn.send_bytes(msg) conn.close() def main(): conn, child_conn = Pipe() p = Process(target=_echo, args=(child_conn,)) p.daemon = True p.start() really_big_msg = latin('X') * (1024 * 1024 * 32) conn.send_bytes(really_big_msg) assert conn.recv_bytes() == really_big_msg conn.send_bytes(SENTINEL) # tell child to quit child_conn.close() if __name__ == "__main__": main()