Friday, May 22, 2009

Tickling, (Did you hear Tickling) Ouch, Its Pickling :-)

Before using pickling, I had a tough time to have the entire data in a single file. Infact i had more than 1Mib in a file. Gedit used to get stuck and infact it lost syntax highlighting too. Python pickling helped me rule out the problem.

Note: For those who are wondering what is pickling, go through this
PICKLE

I had a file full of dictionary elements in it. It was more than 1Mib and I faced lots of problems. It used to take hours together to do a simple program. Then, python pickling helped me to dump the data in to a file in pickle format, more precisely, in a binary format. And, whenever we need, it can be loaded back to the file. If its in the form of dictionary, it will be loaded in the same manner and we can perform get or update functions on the same datastructure. Here is an example of how to convert the dictionary data in to corresponding pickle format.

Consider the following code:

#!/usr/bin/python
import string
import pickle
data={'1':'chandan','2':'nandan'}
file = open("test.py","w")
pickle.dump(data,file)
file.close()
file = open("test.py", "r")
data = pickle.load(file)
file.close()
print data['1']

After dumping the dictionary set into a file test.py, it will be in pickle format in that file. It looks like this
(dp0
S'1'
p1
S'chandan'
)

/* The above pickle format will be in binary. Here i have used a small dictionary set. If we have a large dictionary set, then it is feasible. You can get ur hands dirt using this on your own*/

    * Coming back to the 1Mib file i was mentioning, I converted the entire dictionary set which I had in 1Mib file into pickle format by using the above stated method, dumping it into a file. Then I deleted the entire dictionary set in the 1Mib file. So, that file size reduced to less than 200Kib.
    * Then, I loaded the pickled file to the 200Kib file, which still remains 200Kib itself. The loaded pickled format will be in dictionary format.
    * Then, I used the get, update operations and thus the overloading of gedit is ruled out
    * I have attached few files which might give you an idea of what of I discussed above

No comments:

Post a Comment