Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. import os
  2. import resource
  3. import subprocess
  4. import sys
  5. from functools import wraps
  6.  
  7. EXEC = './bioinf'
  8.  
  9.  
  10. def lcp(s):
  11. n = len(s)
  12. if n > 10000:
  13. return
  14. sa = sorted(list(range(n)), key=lambda i: s[i:])
  15. return [-1] + [len(os.path.commonprefix([s[sa[i]:], s[sa[i - 1]:]])) for i in range(1, n)] + [-1]
  16.  
  17.  
  18. def print_usage():
  19. rusage = resource.getrusage(resource.RUSAGE_CHILDREN)
  20. print(f'User time: {rusage.ru_utime}')
  21. print(f'System time: {rusage.ru_stime}')
  22. print(f'Max memory usage: {rusage.ru_maxrss}kB')
  23.  
  24.  
  25. def usage(f):
  26. @wraps(f)
  27. def wrapper(*args, **kwargs):
  28. usage_before = resource.getrusage(resource.RUSAGE_CHILDREN)
  29. res = f(*args, **kwargs)
  30. usage_after = resource.getrusage(resource.RUSAGE_CHILDREN)
  31.  
  32. f.usage = {
  33. 'utime': usage_after.ru_utime - usage_before.ru_utime,
  34. 'stime': usage_after.ru_stime - usage_before.ru_stime,
  35. 'memory': usage_after.ru_maxrss - usage_before.ru_maxrss
  36. }
  37.  
  38. return res
  39.  
  40. return wrapper
  41.  
  42.  
  43. def get_lcp(in_file):
  44. with open(in_file) as f:
  45. f.readline()
  46. s = lcp(''.join(x.strip() for x in f.readlines())+'$')
  47. if s is None:
  48. return
  49. return str(s).replace(' ', '')
  50.  
  51.  
  52. @usage
  53. def test_file(in_file, l):
  54. if l and l != subprocess.run([EXEC, in_file], stdout=subprocess.PIPE).stdout.decode('utf8').strip():
  55. print(f'TEST FAIL - {in_file}')
  56.  
  57.  
  58. def main():
  59. for f in sys.argv[1:]:
  60. l = get_lcp(f)
  61. test_file(f, l)
  62. print(test_file.usage)
  63.  
  64.  
  65. if __name__ == '__main__':
  66. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement