iterblocks.py 971 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import numpy as np
  2. import numexpr as ne
  3. import bcolz
  4. import time
  5. bcolz.defaults.cparams['shuffle'] = bcolz.SHUFFLE
  6. #bcolz.defaults.cparams['shuffle'] = bcolz.BITSHUFFLE
  7. #bcolz.defaults.cparams['cname'] = 'blosclz'
  8. bcolz.defaults.cparams['cname'] = 'lz4'
  9. bcolz.defaults.cparams['clevel'] = 5
  10. N = 1e8
  11. a = np.arange(N)
  12. ca = bcolz.carray(a)
  13. def timefunc(f):
  14. def f_timer(*args, **kwargs):
  15. start = time.time()
  16. result = f(*args, **kwargs)
  17. end = time.time()
  18. print f.__name__, 'took', round(end - start, 3), 'sec'
  19. return result
  20. return f_timer
  21. @timefunc
  22. def iterblocks0():
  23. return a.sum()
  24. @timefunc
  25. def iterblocks1(arr):
  26. return sum(i for i in arr)
  27. @timefunc
  28. def iterblocks2(arr):
  29. sum = 0.
  30. for b in bcolz.iterblocks(arr, blen=arr.chunklen):
  31. sum += b.sum()
  32. return sum
  33. print repr(ca)
  34. a0 = iterblocks0()
  35. print "a0:", a0
  36. # a1 = iterblocks1(ca)
  37. # assert a0 == a1
  38. a1 = iterblocks2(ca)
  39. assert a0 == a1