小编Son*_*s.S的帖子

如何在Python中的另一个线程中删除异常的打印输出

我有一个使用 git lib 的 python 代码。对于某些命令,git lib 会抛出异常(CommandError 异常)。问题是这个异常是从另一个线程抛出的。我确实尝试/例外并捕获了异常并做了一些解决方法。然而,另一个线程仍在打印异常错误消息。

这是git lib中的代码

    def pump_stream(cmdline, name, stream, is_decode, handler):
        try:
            for line in stream:
                if handler:
                    if is_decode:
                        line = line.decode(defenc)
                    handler(line)
        except Exception as ex:
            log.error("Pumping %r of cmd(%s) failed due to: %r", name, cmdline, ex)
            raise CommandError(['<%s-pump>' % name] + cmdline, ex) from ex
        finally:
            stream.close()
Run Code Online (Sandbox Code Playgroud)

它创建这样的线程:

    threads = []

    for name, stream, handler in pumps:
        t = threading.Thread(target=pump_stream,
                             args=(cmdline, name, stream, decode_streams, handler))
        t.setDaemon(True)
        t.start()
        threads.append(t)

    ## FIXME: Why …
Run Code Online (Sandbox Code Playgroud)

python multithreading exception

5
推荐指数
0
解决办法
547
查看次数

标签 统计

exception ×1

multithreading ×1

python ×1