##// END OF EJS Templates
Cleaned up release tools directory....
Cleaned up release tools directory. Converted almost all to python scripts and made toollib to collect common functions and avoid repetition. Properly commented and documented what each script does. The run_ipy_in_profiler one seems broken, I'm not sure what to do with it. We need to either fix it or remove it later, but it's not critical for 0.10.

File last commit:

r1338:72652d65
r2118:ec9810f7
Show More
multiengine1.ipy
227 lines | 3.7 KiB | text/plain | TextLexer
Brian E Granger
Adding examples from ipython1-dev to docs/examples/kernel. These ...
r1337 #-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
import time
import numpy
Brian E Granger
Fixed most of the examples. A few still don't work, but this is a start.
r1338 import IPython.kernel.magic
from IPython.kernel import client
from IPython.kernel.error import *
Brian E Granger
Adding examples from ipython1-dev to docs/examples/kernel. These ...
r1337
mec = client.MultiEngineClient()
#-------------------------------------------------------------------------------
# Setup
#-------------------------------------------------------------------------------
mec.reset()
mec.activate()
mec.block = True
mec.get_ids()
n = len(mec)
assert n >= 4, "Not Enough Engines: %i, 4 needed for this script"%n
values = [
10,
1.0,
range(100),
('asdf', 1000),
{'a': 10, 'b': 20}
]
keys = ['a','b','c','d','e']
sequences = [
range(100),
numpy.arange(100)
]
#-------------------------------------------------------------------------------
# Blocking execution
#-------------------------------------------------------------------------------
# Execute
mec.execute('import math')
mec.execute('a = 2.0*math.pi')
mec.execute('print a')
for id in mec.get_ids():
mec.execute('b=%d' % id, targets=id)
mec.execute('print b')
try:
mec.execute('b = 10',targets=-1)
except InvalidEngineID:
print "Caught invalid engine ID OK."
try:
mec.execute('a=5; 1/0')
except CompositeError:
print "Caught 1/0 correctly."
%px print a, b
try:
%px 1/0
except CompositeError:
print "Caught 1/0 correctly."
%autopx
import numpy
a = numpy.random.rand(4,4)
a = a+a.transpose()
print numpy.linalg.eigvals(a)
%autopx
mec.targets = [0,2]
%px a = 5
mec.targets = [1,3]
%px a = 10
mec.targets = 'all'
%px print a
# Push/Pull
mec.push(dict(a=10, b=30, c={'f':range(10)}))
mec.pull(('a', 'b'))
mec.zip_pull(('a', 'b'))
for id in mec.get_ids():
mec.push(dict(a=id), targets=id)
for id in mec.get_ids():
mec.pull('a', targets=id)
mec.pull('a')
mec['a'] = 100
mec['a']
# get_result/reset/keys
mec.get_result()
%result
mec.keys()
mec.reset()
mec.keys()
try:
%result
except CompositeError:
print "Caught IndexError ok."
%px a = 5
mec.get_result(1)
mec.keys()
# Queue management methods
%px import time
prs = [mec.execute('time.sleep(2.0)',block=False) for x in range(5)]
mec.queue_status()
time.sleep(3.0)
mec.clear_queue()
mec.queue_status()
time.sleep(2.0)
mec.queue_status()
mec.barrier(prs)
for pr in prs:
try:
pr.r
except CompositeError:
print "Caught QueueCleared OK."
# scatter/gather
mec.scatter('a', range(10))
mec.gather('a')
mec.scatter('b', numpy.arange(10))
mec.gather('b')
#-------------------------------------------------------------------------------
# Non-Blocking execution
#-------------------------------------------------------------------------------
mec.block = False
# execute
pr1 = mec.execute('a=5')
pr2 = mec.execute('import sets')
mec.barrier((pr1, pr2))
pr1 = mec.execute('1/0')
pr2 = mec.execute('c = sets.Set()')
mec.barrier((pr1, pr2))
try:
pr1.r
except CompositeError:
print "Caught ZeroDivisionError OK."
pr = mec.execute("print 'hi'")
pr.r
pr = mec.execute('1/0')
try:
pr.r
except CompositeError:
print "Caught ZeroDivisionError OK."
# Make sure we can reraise it!
try:
pr.r
except CompositeError:
print "Caught ZeroDivisionError OK."
# push/pull
pr1 = mec.push(dict(a=10))
pr1.get_result()
pr2 = mec.pull('a')
pr2.r
# flush
mec.flush()
pd1 = mec.execute('a=30')
pd2 = mec.pull('a')
mec.flush()
try:
pd1.get_result()
except InvalidDeferredID:
print "PendingResult object was cleared OK."
try:
pd2.get_result()
except InvalidDeferredID:
print "PendingResult object was cleared OK."
# This is a command to make sure the end of the file is happy.
print "The tests are done!"