[svn r63208] moving example to top-level dir.
--HG-- branch : trunk
This commit is contained in:
parent
3305a0e3db
commit
c81ffeb027
|
@ -0,0 +1,37 @@
|
||||||
|
"""
|
||||||
|
example
|
||||||
|
|
||||||
|
reading results from possibly blocking code running in sub processes.
|
||||||
|
"""
|
||||||
|
import py
|
||||||
|
|
||||||
|
NUM_PROCESSES = 5
|
||||||
|
|
||||||
|
channels = []
|
||||||
|
for i in range(NUM_PROCESSES):
|
||||||
|
gw = py.execnet.PopenGateway() # or use SSH or socket gateways
|
||||||
|
channel = gw.remote_exec("""
|
||||||
|
import time
|
||||||
|
secs = channel.receive()
|
||||||
|
time.sleep(secs)
|
||||||
|
channel.send("waited %d secs" % secs)
|
||||||
|
""")
|
||||||
|
channels.append(channel)
|
||||||
|
print "*** instantiated subprocess", gw
|
||||||
|
|
||||||
|
mc = py.execnet.MultiChannel(channels)
|
||||||
|
queue = mc.make_receive_queue()
|
||||||
|
|
||||||
|
print "***", "verifying that timeout on receiving results from blocked subprocesses works"
|
||||||
|
try:
|
||||||
|
queue.get(timeout=1.0)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
print "*** sending subprocesses some data to have them unblock"
|
||||||
|
mc.send_each(1)
|
||||||
|
|
||||||
|
print "*** receiving results asynchronously"
|
||||||
|
for i in range(NUM_PROCESSES):
|
||||||
|
channel, result = queue.get(timeout=2.0)
|
||||||
|
print "result", channel.gateway, result
|
Loading…
Reference in New Issue