thread_pool.py 685 B

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