Guest User

Untitled

a guest
Mar 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. from time import sleep
  2. from multiprocessing import Array, Pool
  3.  
  4. progress_array = None
  5.  
  6.  
  7. def init_progress_counter(num_processes):
  8. global progress_array
  9. progress_array = Array('i',
  10. [0 for _ in range(num_processes)],
  11. lock=False)
  12.  
  13.  
  14. def current_progress():
  15. return sum(progress_array)
  16.  
  17.  
  18. def update_progress(process_idx, value):
  19. progress_array[process_idx] = value
  20.  
  21.  
  22. def fn(data):
  23. process_idx, d = data
  24. for idx, i in enumerate(d):
  25. update_progress(process_idx, idx + 1)
  26. print('\r{} '.format(current_progress()), end='')
  27. sleep(.001)
  28.  
  29.  
  30. if __name__ == '__main__':
  31. num_processes = 4
  32. init_progress_counter(num_processes)
  33. pool = Pool(num_processes)
  34. mul = 10000
  35.  
  36. data = [(i, list(range(i * mul, mul * (i + 1))))
  37. for i in range(num_processes)]
  38. pool.map(fn, data)
Add Comment
Please, Sign In to add comment