iterblocks.py 965 B

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