47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from __future__ import print_function | ||
|  | import os | ||
|  | 
 | ||
|  | from IPython.qt.console.rich_ipython_widget import RichIPythonWidget | ||
|  | from IPython.qt.inprocess import QtInProcessKernelManager | ||
|  | 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 = QtInProcessKernelManager() | ||
|  |     kernel_manager.start_kernel() | ||
|  |     kernel = kernel_manager.kernel | ||
|  |     kernel.gui = 'qt4' | ||
|  |     kernel.shell.push({'foo': 43, 'print_process_id': print_process_id}) | ||
|  | 
 | ||
|  |     kernel_client = kernel_manager.client() | ||
|  |     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() |