thread_pool.py 517 B

1234567891011121314151617181920212223242526272829
  1. import threading
  2. import queue
  3. import logging
  4. q = queue.Queue()
  5. def worker():
  6. while True:
  7. try:
  8. task = q.get()
  9. logging.debug(f"Working on {task}")
  10. job, callback = task
  11. job(callback)
  12. logging.debug(f"Working on {task} done.")
  13. q.task_done()
  14. except Exception as e:
  15. logging.debug("error:", exc_info=e)
  16. raise e
  17. def init_workers(count=2):
  18. for _ in range(count):
  19. threading.Thread(target=worker).start()
  20. class Pool:
  21. def submit(self, job, callback):
  22. q.put((job, callback))
  23. pool = Pool()