For those familiar with python programming, IPython needs no introduction. I will forgo the niceties and just cut to the chase for the uninitiated. IPython is a python framework which provides an interactive real-time programming experience for the users. It is complete with an interactive shell, a QT graphical user interface and a web interface; the infamous IPython Notebook. Installation guides are all around the web so a simple Google will do.
However, imagine a situation where you have certain piece of code running, say, a server (take Tornado or Django for instance). And you want to run your python codes in a dynamic manner; you want to create a variable during breakfast, and want to use it as a count for your web-site's visitors, and during lunch, you want to check how many visitors have come to your site. One approach will be to go full caveman and keep a thread running in the background and, is there anything we hate more than dealing with implementing a running thread with an interactive interface?
IPython provides a simple, elegant solution for this. You can initiate a 'kernel' of IPython, and the kernel will act as a single, independent and contiguous runtime instance for Python. Imagine the possibilities with this. However, harnessing the power of this extremely useful tool is not easy for a beginner with the lack of detailed documentation, for understandable reasons.
Now for the fun part; There is only one class that you have to import in your code to do this (note that I assume you already have IPython framework installed in your computer). That is the "KernelManager" object provided in IPython. I'll boil it down to the simple steps you have to follow.
- Create a Kernel Manager
- Use the Kernel Manager to create a kernel instance and run it
- Use the Kernel Manager to create a client which communicates with the said kernel
- Open a channel between the client and the kernel using the client (four kinds of channels, go through the documentation for detailed information on them)
- Feed your code through the ShellChannel of the client.
The Sample code looks something like this.
from IPython.kernel.manager import KernelManager
km = KernelManager()
km.start_kernel()
cl=km.client()
chan = cl.shell_channel()
code_str= "f = open ('/home/yourname/yourfile.txt','w')\
f.write('the sample works')\
f.close()"
chan.execute(code_str)
et voila.... You have a code!
If you need any clarifications, please ask below. Have an interview. Gotta go...
No comments:
Post a Comment