From 4a8ebe8e8f9e145b5365080b37dd637dafbbdfe0 2013-04-24 04:47:46 From: MinRK Date: 2013-04-24 04:47:46 Subject: [PATCH] add in-process kernel examples --- diff --git a/examples/inprocess/embedded_qtconsole.py b/examples/inprocess/embedded_qtconsole.py new file mode 100644 index 0000000..9bd2f92 --- /dev/null +++ b/examples/inprocess/embedded_qtconsole.py @@ -0,0 +1,46 @@ +import os + +from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget +from IPython.frontend.qt.inprocess import QtInProcessKernelClient +from IPython.kernel.inprocess import InProcessKernelManager +from IPython.lib import guisupport + + +def print_process_id(): + print 'Process ID is:', os.getpid() + + +def main(): + # Print the ID of the main process + print_process_id() + + app = guisupport.get_app_qt4() + + # Create an in-process kernel + # >>> print_process_id() + # will print the same process ID as the main process + kernel_manager = InProcessKernelManager() + kernel_manager.start_kernel() + kernel = kernel_manager.kernel + kernel.gui = 'qt4' + kernel.shell.push({'foo': 43, 'print_process_id': print_process_id}) + + kernel_client = QtInProcessKernelClient(kernel=kernel) + kernel_client.start_channels() + + def stop(): + kernel_client.stop_channels() + kernel_manager.shutdown_kernel() + app.exit() + + control = RichIPythonWidget() + control.kernel_manager = kernel_manager + control.kernel_client = kernel_client + control.exit_requested.connect(stop) + control.show() + + guisupport.start_event_loop_qt4(app) + + +if __name__ == '__main__': + main() diff --git a/examples/inprocess/embedded_terminal.py b/examples/inprocess/embedded_terminal.py new file mode 100644 index 0000000..cda7625 --- /dev/null +++ b/examples/inprocess/embedded_terminal.py @@ -0,0 +1,30 @@ +import os + +from IPython.kernel.inprocess import InProcessKernelManager +from IPython.frontend.terminal.console.interactiveshell import ZMQTerminalInteractiveShell + + +def print_process_id(): + print 'Process ID is:', os.getpid() + + +def main(): + print_process_id() + + # Create an in-process kernel + # >>> print_process_id() + # will print the same process ID as the main process + kernel_manager = InProcessKernelManager() + kernel_manager.start_kernel() + kernel = kernel_manager.kernel + kernel.gui = 'qt4' + kernel.shell.push({'foo': 43, 'print_process_id': print_process_id}) + client = kernel_manager.client() + client.start_channels() + + shell = ZMQTerminalInteractiveShell(kernel_manager=kernel_manager, kernel_client=client) + shell.mainloop() + + +if __name__ == '__main__': + main()