import gevent from gevent import monkey monkey.patch_all() import os os.environ['MONKEY'] = "True" import io from multiprocessing import Pipe from gevent.socket import wait_read, wait_write pip = io.BytesIO() _rpipe, _wpipe = Pipe() import pickle def writer(): for i in range(0, 10): print "writing" wait_write(_wpipe.fileno()) array = [1, 2, "hello", {'joey': i}] #_wpipe.send("{}".format(pickle.dumps(array))) pickle.dump(array, _wpipe) gevent.sleep(.5) _wpipe.close() print "Done writing" def reader(): chars = None first = True print "reading" while first or chars: wait_read(_rpipe.fileno()) chars = pickle.load(_rpipe) print "READ {}".format(chars) gevent.sleep(2.5) greenlets = [] greenlets.append(gevent.spawn(writer)) greenlets.append(gevent.spawn(reader)) gevent.wait(greenlets)