Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys
  4. import time
  5.  
  6. from random import randint
  7.  
  8. import gc
  9. import subprocess
  10. import os
  11.  
  12. from array import ArrayType
  13.  
  14. from ctypes import c_uint32, Structure
  15.  
  16. from contextlib import contextmanager
  17.  
  18. ARR_MAX = 10000000
  19.  
  20. def get_process_size():
  21. cmd = ["/bin/ps","up",str(format(os.getpid()))]
  22. p = subprocess.run(cmd, stdout=subprocess.PIPE)
  23. output = p.stdout.decode().split("\n")[1]
  24. fields = [a for a in output.split() if a]
  25. return tuple(map(int,fields[4:6]))
  26.  
  27. def bytes_to_human(bytes):
  28. for factor in ["B","KB","MB","GB","TB"]:
  29. if bytes < 1024:
  30. break
  31. else:
  32. bytes = bytes / 1024
  33. return "{bytes:0.2f}{factor}".format(bytes=bytes,factor=factor)
  34.  
  35. def generate_point(x):
  36. return x, x
  37.  
  38. @contextmanager
  39. def timer(msg):
  40. start = time.time()
  41. print ("ENTER: {}".format(msg))
  42. try:
  43. yield
  44. finally:
  45. end = time.time() - start
  46. print(" END: {} ({:0.2f}s)".format(msg, end))
  47.  
  48. start = get_process_size()
  49. if sys.argv[1] == "list":
  50. f = list(range(0,ARR_MAX))
  51.  
  52. elif sys.argv[1] == "atlist":
  53. at = ArrayType("I", range(0,ARR_MAX))
  54.  
  55. elif sys.argv[1] == "ctypeslist":
  56. intarr = c_uint32 * ARR_MAX
  57. carr = intarr(*range(0,ARR_MAX))
  58.  
  59. elif sys.argv[1] == "tuplepoints":
  60. f = [(x,x) for x in range(0,ARR_MAX)]
  61.  
  62. elif sys.argv[1] == "ctypespoints":
  63. class POINT(Structure):
  64. _fields_ = [("x", c_uint32),
  65. ("y", c_uint32)]
  66. arr = POINT * ARR_MAX
  67. arr2 = arr()
  68. for i in range(0,ARR_MAX):
  69. arr2[i] = POINT(i,i)
  70.  
  71. gc.collect()
  72.  
  73. end = get_process_size()
  74.  
  75. print (end[0] - start[0], end[1] - start[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement