我正在尝试使用自定义sys.excepthook与多处理库来处理所有线程上的异常。我知道有一个带有python的outstanding bug会阻止它与Threading库一起正常工作,测试表明这也会影响多处理。
导致我使用它的Python错误和Stackoverflow post都有Threading库的解决方法,但没有用于多处理。我已经尝试调整解决方法以用于多处理,但异常仍然照常抛出。
def install_thread_excepthook():
import sys
start_old = multiprocessing.Process.start
def start(*args, **kwargs):
try:
start_old(*args, **kwargs)
except (KeyboardInterrupt, SystemExit):
raise
except:
sys.excepthook(*sys.exc_info())
multiprocessing.Process.start = run
如何通过多处理使sys.excepthook正常工作?