gpt4 book ai didi

多进程上的 Python sys.excepthook

转载 作者:行者123 更新时间:2023-12-03 07:38:15 26 4
gpt4 key购买 nike

我正在尝试设置自定义 sys.excepthook在多进程上。
但它不起作用。

在下面的代码中,我预计会打印 This is my traceback function:字符串作为错误消息的前缀,但它没有。

代码:

from multiprocessing import Process
import time
import traceback
import logging
import sys

def excepthook(etype, evalue, traceback):
traceback_strs = traceback.format_exception_only(etype, evalue)
exception_str = "This is my traceback function:" + "\r\n".join(traceback_strs)
print("ExceptHook")
print(exception_str)


def subprocess_main():
sys.excepthook = excepthook
time.sleep(3)
raise Exception("HelloWorld")


if __name__ == "__main__":
p = Process(target=subprocess_main)
p.start()
p.join()

为什么它不起作用?

操作系统:Windows10
python :3.6.3

最佳答案

sys.excepthook当有未捕获的异常时调用,但 Process has exception handler routine ,它在你的钩子(Hook)之前消耗了异常。

如果您仍然需要自定义异常处理,您可以覆盖 Process.run方法:

class MyProcess(Process):

def run(self):
try:
super().run()
except Exception:
excepthook(*sys.exc_info())

ps:参数 traceback你原来的功能 excepthook阴影模块对象 traceback ,如果实际调用它会触发错误。

关于多进程上的 Python sys.excepthook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47815850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com