Skip to main content
 首页 » 编程设计

python之Pool.map 只是挂起——如何进行异常处理

2024年08月28日30sxdcgaq8080

我有以下代码:

pool = Pool(10) 
pool.map(run_update_procedure, titles_to_update) 

有时 pool.map 仅适用于上面 20 个 titles 中的大约 18 个。这会导致程序挂起。

有没有办法做这样的事情:

try: 
    pool.map(...) 

所以如果映射失败,函数会继续吗?我如何将此异常处理构建到多处理中?

基本上,如果线程未在 x 时间内完成,我想将其终止。

请您参考如下方法:

我的建议是(最好)修复 run_update_procedure 超时或以其他方式表现得更好(here's 可能有帮助的潜在代码段),而不是挂起,或 切换到 multiprocessing.Pool 的 apply_async 或 map_async,并为 AsyncResult 提供一个 timeout 参数.get().

例子:

pool = Pool(10) 
result = pool.map_async(run_update_procedure, titles_to_update) 
try: 
    updates = result.get(timeout=x) 
except TimeoutError: 
    # handle timeout