Skip to content

Instantly share code, notes, and snippets.

@jtallieu
Created October 5, 2019 19:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtallieu/07becbe8917a0c62d2423e83bdfc223d to your computer and use it in GitHub Desktop.
Save jtallieu/07becbe8917a0c62d2423e83bdfc223d to your computer and use it in GitHub Desktop.
Passing python object over a Pipe
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment