Advertisement
viking_unet

thtreads_and_joins

Apr 7th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.21 KB | None | 0 0
  1. """
  2. python3 -m pip install memory_profiler
  3.  
  4. cmd: python3 -m memory_profiler test.py
  5. """
  6.  
  7. import time
  8. from threading import Thread
  9.  
  10. @profile
  11. def test(heavy):
  12.  
  13.     time.sleep(1)
  14.    
  15.     def test(number, heavy = False):
  16.         print('test thread number %s' % number)
  17.         if heavy: buf = [2**number for i in range(2**number)]
  18.         else:     buf = [2* number for i in range(2* number)]
  19.         time.sleep(1)
  20.        
  21.     tasks = []
  22.     for number in range(1, 21):
  23.         task = Thread(target = test, args = (number, heavy))
  24.         tasks.append(task)
  25.    
  26.     time.sleep(1)
  27.    
  28.     for task in tasks: task.start()
  29.        
  30.     time.sleep(1)
  31.    
  32.     for task in tasks: task.join()    
  33.    
  34.     time.sleep(1)
  35.    
  36. @profile
  37. def test_heavy():
  38.     time.sleep(1)
  39.     test(heavy = True)
  40.     time.sleep(1)
  41.    
  42. @profile
  43. def test_light():
  44.     for i in range(100):
  45.         test(heavy = False)
  46.            
  47. if __name__ == '__main__':
  48.    
  49.     print('start testing')
  50.     time.sleep(1)
  51.    
  52.     # uncoment for 1 test - little theads, but heavy
  53.     test_heavy()
  54.    
  55.     # uncoment for 2 test - many threads, but light
  56.     #test_light()
  57.    
  58.     time.sleep(1)
  59.     print('done')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement