import sys
import os
from multiprocessing import Process, Pipe


def f(conn):
    conn.send([42, None, "hello"])
    conn.send([42, 42, 42])
    conn.close()


if __name__ == "__main__":
    parent_conn, child_conn = Pipe(False)
    # print(parent_conn, child_conn)
    p = Process(target=f, args=(child_conn,))

    # Extension: need to call this for uPy
    if sys.implementation.name == "micropython":
        p.register_pipe(parent_conn, child_conn)

    p.start()
    parent_conn.recv() == [42, None, "hello"]
    parent_conn.recv() == [42, 42, 42]
    p.join()
import sys
import os
from multiprocessing import Process, Pipe

def f(conn):
    conn.send([42, None, 'hello'])
    conn.send([42, 42, 42])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe(False)
    #print(parent_conn, child_conn)
    p = Process(target=f, args=(child_conn,))

    # Extension: need to call this for uPy
    if sys.implementation.name == "micropython":
        p.register_pipe(parent_conn, child_conn)

    p.start()
    parent_conn.recv() == [42, None, 'hello']
    parent_conn.recv() == [42, 42, 42]
    p.join()