Advertisement
Guest User

Untitled

a guest
Feb 6th, 2014
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.66 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import multiprocessing
  5. import procname
  6. import time
  7.  
  8. class Receiver(multiprocessing.Process):
  9.     ''' Reads from queue with 3 secs timeout '''
  10.  
  11.     def __init__(self, queue):
  12.         multiprocessing.Process.__init__(self)
  13.         self.queue = queue
  14.  
  15.     def run(self):
  16.         procname.setprocname('Receiver')
  17.         while True:
  18.             try:
  19.                 msg = self.queue.get(timeout=3)
  20.                 print '<<< `{}`, queue rlock: {}'.format(
  21.                     msg, self.queue._rlock)
  22.             except multiprocessing.queues.Empty:
  23.                 print '<<< EMPTY, Queue rlock: {}'.format(
  24.                     self.queue._rlock)
  25.                 pass
  26.  
  27.  
  28. class Worker(multiprocessing.Process):
  29.     ''' Puts into queue with 1 sec sleep '''
  30.  
  31.     def __init__(self, queue):
  32.         multiprocessing.Process.__init__(self)
  33.         self.queue = queue
  34.  
  35.     def run(self):
  36.         procname.setprocname('Worker')
  37.         while True:
  38.             time.sleep(1)
  39.             print 'Worker: putting msg, Queue size: ~{}'.format(
  40.                 self.queue.qsize())
  41.             self.queue.put('msg from Worker')
  42.  
  43.  
  44. if __name__ == '__main__':
  45.     queue = multiprocessing.Queue()
  46.  
  47.     worker = Worker(queue)
  48.     worker.start()
  49.  
  50.     receiver = Receiver(queue)
  51.     receiver.start()
  52.  
  53.     while True:
  54.         time.sleep(1)
  55.         if not worker.is_alive():
  56.             print 'Restarting worker'
  57.             worker = Worker(queue)
  58.             worker.start()
  59.         if not receiver.is_alive():
  60.             print 'Restarting receiver'
  61.             receiver = Receiver(queue)
  62.             receiver.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement