Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. import threading
  2. import time, random
  3.  
  4. class Counter:
  5. def __init__(self):
  6. self.lock = threading.Lock()
  7. self.value = 0
  8.  
  9. def increment(self):
  10. self.lock.acquire() # critical section
  11. self.value = value = self.value + 1
  12. self.lock.release()
  13. return value
  14.  
  15. counter = Counter()
  16.  
  17. class Worker(threading.Thread):
  18.  
  19. def run(self):
  20. for i in range(10):
  21. # pretend we're doing something that takes 10-100 ms
  22. value = counter.increment() # increment global counter
  23. time.sleep(random.randint(10, 100) / 1000.0)
  24. print self.getName(), "-- task", i, "finished", value
  25.  
  26. #
  27. # try it
  28.  
  29. for i in range(10):
  30. Worker().start() # start a worker
  31.  
  32. ## Thread-1 -- task 0 finished 1
  33. ## Thread-3 -- task 0 finished 3
  34. ## Thread-7 -- task 0 finished 8
  35. ## Thread-1 -- task 1 finished 7
  36. ## Thread-4 -- task 0 Thread-5 -- task 0 finished 4
  37. ## finished 5
  38. ## Thread-8 -- task 0 Thread-6 -- task 0 finished 9
  39. ## finished 6
  40. ## ...
  41. ## Thread-6 -- task 9 finished 98
  42. ## Thread-4 -- task 9 finished 99
  43. ## Thread-9 -- task 9 finished 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement