1
0

thread.py 927 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import threading
  2. import traceback
  3. class Threading(threading.Thread):
  4. """
  5. 子线程
  6. """
  7. def __init__(self, func, *args, start_now: bool = True):
  8. """
  9. :param func: 子线程函数
  10. :param args: 子线程参数
  11. :param start_now: 是否马上运行 (否则要回调.start函数)
  12. """
  13. threading.Thread.__init__(self)
  14. self.func = func
  15. self.args = args
  16. self.result = None
  17. if start_now:
  18. self.start()
  19. def run(self):
  20. try:
  21. self.result = self.func(*self.args)
  22. except:
  23. traceback.print_exc()
  24. finally:
  25. del self.func, self.args
  26. def wait_event(self) -> any:
  27. """
  28. 等待线程结束
  29. :return: 线程函数的返回值
  30. """
  31. self.join()
  32. return self.result
  33. def getThreadIdent():
  34. return threading.currentThread().ident