from random import choice, randrange, shuffle from time import time from cStringIO import StringIO from gzip import GzipFile from os import system k = 35 frags = [] for i in xrange(k): size = randrange(2,7) frag = '' for j in xrange(size): frag += choice(string.letters) frags.extend([frag] * (i+1)) frags.extend(string.letters*k) shuffle(wfrags) snips = [] for i in xrange(50000): s = ''.join(choice(frags) for j in xrange(5)) snips.append(s) def emit(f, data=snips): for datum in data: f.write(datum) for _ in xrange(3): results = [] # GZip directly start = time() f1 = GzipFile('tmp1.gz', 'w') emit(f1) f1.close() results.append(time() - start) # StringIO then zip start = time() f2 = StringIO() f2g = GzipFile('tmp2.gz', 'w') emit(f2) f2g.write(f2.getvalue()) f2.close() f2g.close() results.append(time() - start) # Regular file then externally zip system('rm tmp3.gz') start = time() f3 = open('tmp3', 'wb') emit(f3) f3.close() system('gzip tmp3') results.append(time() - start) print results