2024-04-29 03:55:50 发布
网友
我对Python还比较陌生,很难理解这个池的行为。我曾尝试在stackoverflow上查看类似的问题,但在理解这个问题时仍有困难。你知道吗
例如,如果我们使用遗嘱执行人: 使用ThreadPoolExecutor(8)作为池: 池.map(剂量测定,试验清单)
池中发生的所有错误都将被抑制而不显示。你知道吗
是否有任何可用参数使池停止执行并显示异常?你知道吗
提前谢谢!你知道吗
我为自己找到了一种间接绕过这个问题的可能性。它实际上非常简单,所以如果有人遇到这个问题,我想在这里发布它。我不知道这是不是很聪明,但对我来说这个解决办法是好的。你知道吗
首先感谢@artiom,正如他所说的,最好是直接在并行化函数中捕获错误。你知道吗
现在是“旁路”:
在函数中围绕整个代码放置一个try-except块,并捕获所有异常
except Exception as e:
是的。 异常只记录在except块中,例如使用sentry或其他日志框架。这样,您至少可以再次查看抛出的异常并修复代码中的错误。你知道吗
简单示例:
def for_parallel(chunk): for one in chunk: try: a = 1 foo(one['bla']) doSomething(one['blu']) except Exception as e: sentry.capture_exception(e) def main(): with ThreadPoolExecutor(8) as pool: pool.map(for_parallel, my_list)
我为自己找到了一种间接绕过这个问题的可能性。它实际上非常简单,所以如果有人遇到这个问题,我想在这里发布它。我不知道这是不是很聪明,但对我来说这个解决办法是好的。你知道吗
首先感谢@artiom,正如他所说的,最好是直接在并行化函数中捕获错误。你知道吗
现在是“旁路”:
在函数中围绕整个代码放置一个try-except块,并捕获所有异常
是的。 异常只记录在except块中,例如使用sentry或其他日志框架。这样,您至少可以再次查看抛出的异常并修复代码中的错误。你知道吗
简单示例:
相关问题 更多 >
编程相关推荐