diff --git a/IPython/zmq/parallel/controller.py b/IPython/zmq/parallel/controller.py old mode 100644 new mode 100755 index dde3aca..fad60c4 --- a/IPython/zmq/parallel/controller.py +++ b/IPython/zmq/parallel/controller.py @@ -802,7 +802,7 @@ def make_argument_parser(): return parser -def main(): +def main(argv=None): import time from multiprocessing import Process @@ -816,7 +816,7 @@ def main(): parser = make_argument_parser() - args = parser.parse_args() + args = parser.parse_args(argv) parse_url(args) iface="%s://%s"%(args.transport,args.ip)+':%i' diff --git a/IPython/zmq/parallel/engine.py b/IPython/zmq/parallel/engine.py old mode 100644 new mode 100755 index 1284874..fc368a3 --- a/IPython/zmq/parallel/engine.py +++ b/IPython/zmq/parallel/engine.py @@ -39,8 +39,10 @@ class Engine(object): registrar=None heart=None kernel=None + user_ns=None - def __init__(self, context, loop, session, registrar, client=None, ident=None): + def __init__(self, context, loop, session, registrar, client=None, ident=None, + heart_id=None, user_ns=None): self.context = context self.loop = loop self.session = session @@ -48,6 +50,7 @@ class Engine(object): self.client = client self.ident = ident if ident else str(uuid.uuid4()) self.registrar.on_send(printer) + self.user_ns = user_ns def register(self): @@ -78,8 +81,14 @@ class Engine(object): sub.on_recv(lambda *a: None) port = sub.bind_to_random_port("tcp://%s"%LOCALHOST) iopub_addr = "tcp://%s:%i"%(LOCALHOST,12345) - make_kernel(self.ident, control_addr, shell_addrs, iopub_addr, hb_addrs, - client_addr=None, loop=self.loop, context=self.context, key=self.session.key) + + k = make_kernel(self.ident, control_addr, shell_addrs, iopub_addr, + hb_addrs, client_addr=None, loop=self.loop, + context=self.context, key=self.session.key)[-1] + self.kernel = k + if self.user_ns is not None: + self.user_ns.update(self.kernel.user_ns) + self.kernel.user_ns = self.user_ns else: # logger.error("Registration Failed: %s"%msg) @@ -100,11 +109,11 @@ class Engine(object): -def main(): +def main(argv=None, user_ns=None): parser = make_base_argument_parser() - args = parser.parse_args() + args = parser.parse_args(argv) parse_url(args) @@ -127,7 +136,11 @@ def main(): reg = zmqstream.ZMQStream(reg, loop) client = None - e = Engine(ctx, loop, session, reg, client, args.ident) + e = Engine(ctx, loop, session, reg, client, args.ident, user_ns=user_ns) dc = ioloop.DelayedCallback(e.start, 100, loop) dc.start() - loop.start() \ No newline at end of file + loop.start() + +# Execution as a script +if __name__ == '__main__': + main() diff --git a/IPython/zmq/parallel/streamkernel.py b/IPython/zmq/parallel/streamkernel.py index a361bc5..c08f856 100755 --- a/IPython/zmq/parallel/streamkernel.py +++ b/IPython/zmq/parallel/streamkernel.py @@ -419,5 +419,5 @@ def make_kernel(identity, control_addr, shell_addrs, iopub_addr, hb_addrs, shell_streams=shell_streams, iopub_stream=iopub_stream, client=client) kernel.start() - return loop, c + return loop, c, kernel