Skip to content

Instantly share code, notes, and snippets.

View lsbardel's full-sized avatar
☀️
magic

Luca Sbardella lsbardel

☀️
magic
View GitHub Profile
@lsbardel
lsbardel / strings.py
Created November 25, 2011 22:05
python string benchmarking
import sys
import timeit
if sys.version_info < (3,0):
range = xrange
GSTR = 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
def string_global():
for x in range(0,10000):
@lsbardel
lsbardel / humanbytes.py
Created February 9, 2012 09:44
Convert a number of bytes into a human readable memory usage
memory_symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
memory_size = dict(((s,1 << (i+1)*10) for i,s in enumerate(memory_symbols)))
def convert_bytes(b):
'''Convert a number of bytes into a human readable memory usage'''
if b is None:
return '#NA'
for s in reversed(memory_symbols):
if b >= memory_size[s]:
value = float(b) / memory_size[s]
@lsbardel
lsbardel / Socket options
Created February 10, 2012 10:28
Print a list of available socket options
import socket
solist = [x for x in dir(socket) if x.startswith('SO_')]
solist.sort()
for x in solist:
print(x)
@lsbardel
lsbardel / skiplist.py
Created February 10, 2012 16:24
Skiplist
import sys
from random import random
from math import log
ispy3k = int(sys.version[0]) >= 3
if not ispy3k:
range = xrange
@lsbardel
lsbardel / orderedset.py
Created February 24, 2012 16:35
A set which remebers the insertion order
KEY, PREV, NEXT = range(3)
class OrderedSet(object):
'''Equivalent to OrderedDict, this is a set class which remembers the
insertion order.
From http://code.activestate.com/recipes/576694-orderedset/'''
def __init__(self, iterable=None):
self.end = end = []
end += [None, end, end] # sentinel node for doubly linked list
self.map = {} # key --> [key, prev, next]
@lsbardel
lsbardel / test.py
Created March 13, 2012 11:40
unittest or unittest2
import sys
if sys.version_info >= (2,7):
from unittest import *
else:
try:
from unittest2 import *
except ImportError:
print('To run tests in python 2.6 you need to install\
the unitest2 package')
@lsbardel
lsbardel / jinja2djpcms.py
Created March 13, 2012 16:35
Jinja2 template binding for djpcms
'''Jinja2 template binding for djpcms.
'''
import os
import jinja2
from djpcms.utils.importer import import_module
from djpcms import html, ImproperlyConfigured
####################################### JINJA2 Settings
@lsbardel
lsbardel / path.py
Created May 4, 2012 09:05
Stand alone compact module for managing python paths
'''Stand alone compact module for managing python paths.'''
import os
import sys
if sys.version_info > (3,0):
string_type = str
else:
string_type = unicode
range = xrange
@lsbardel
lsbardel / async.py
Created May 8, 2012 16:15
A micro-asyncronous script derived from twisted
'''A micro-asyncronous script derived from twisted.'''
import sys
import traceback
from collections import deque
__all__ = ['Deferred', 'MultiDeferred']
def iterdata(stream):
@lsbardel
lsbardel / number_string.py
Created May 9, 2012 17:19
str number benchmarks
>>> import timeit
>>> timeit.Timer('str(n)','n=100000').timeit()
0.31551924882785443
>>> timeit.Timer('"%s"%n','n=100000').timeit()
0.27519383648404983
>>> timeit.Timer('"{0}".format(n)','n=100000').timeit()
0.5812355446599895