Advertisement
Guest User

Untitled

a guest
Apr 4th, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.24 KB | None | 0 0
  1. from multiprocessing import Manager
  2. from multiprocessing import Process
  3.  
  4. import logging
  5. from time import sleep
  6.  
  7. FORMAT = '%(asctime)-15s %(name)-15.15s %(levelname)-8s %(message)s'
  8. logging.basicConfig(format=FORMAT, level=logging.INFO)
  9. logger = logging.getLogger(__name__)
  10.  
  11. class Producer():
  12.     def __init__(self, settings: dict):
  13.         self.name = settings['name']
  14.         self.settings = settings
  15.         self.status_dict = {}
  16.         logger.info("init")
  17.  
  18.     def set_status_dict(self, status: dict):
  19.         self.status_dict = status
  20.         self.status_dict['name'] = self.name
  21.  
  22.     def _set_status(self, status_message):
  23.         self.status_dict['status'] = status_message
  24.  
  25.     def run(self):
  26.         self._set_status('started')
  27.         counter = 0
  28.         while counter < 5:
  29.             counter += 1
  30.             logger.info("iteration {0}".format(counter))
  31.             self._set_status("Iteration {0}".format(counter))
  32.             sleep(5)
  33.         self._set_status('finished')
  34.  
  35.  
  36. def start_producer(producer_setting: dict, status_dict: dict):
  37.     importer = Producer(producer_setting)
  38.     importer.set_status_dict(status_dict)
  39.     importer.run()
  40.  
  41. if __name__ == '__main__':
  42.     with Manager() as manager:
  43.         producers = []
  44.         settings = [{'name':'test'}]
  45.  
  46.         for setting in settings:
  47.             status = manager.dict()
  48.             logger.info("Start Producer {0}".format(setting['name']))
  49.             producer = Process(target=start_producer, args=(setting, status))
  50.             producer.start()
  51.             producers.append([producer, status])
  52.  
  53.         logger.info("initialized {0} producers".format(len(producers)))
  54.  
  55.         while True:
  56.             text_command = input('Enter your command:')
  57.             if text_command == 'exit':
  58.                 logger.info("waiting for producers")
  59.                 for p in producers:
  60.                     p[0].join()
  61.                 logger.info("Exit application.")
  62.                 break
  63.             elif text_command == 'status':
  64.                 for p in producers:
  65.                     if 'name' in p[1] and 'status' in p[1]:
  66.                         print('{0}:{1}'.format(p[1]['name'], p[1]['status']))
  67.             else:
  68.                 print("Unknown command.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement