#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------

import time
import numpy

import IPython.kernel.magic
from IPython.kernel import client
from IPython.kernel.error import *

mec = client.MultiEngineClient()

#-------------------------------------------------------------------------------
# Setup
#-------------------------------------------------------------------------------

mec.reset()
# print mec.keys()
mec.activate()
# mec.block=True
mec.get_ids()
n = len(mec)
assert n >= 4, "Not Enough Engines: %i, 4 needed for this script"%n

mec.block=False

pr1 = mec.execute('import time')
pr2 = mec.execute('time.sleep(5)')
pr3 = mec.push(dict(a=10,b=30,c=range(20000),d='The dog went swimming.'))
pr4 = mec.pull(('a','b','d'))

print "Try a non-blocking get_result"
assert pr4.get_result(block=False, default='not done')=='not done'

print "Now wait for all the results"
mec.barrier((pr1,pr2,pr3,pr4))
print "The last pull got:", pr4.r
