我有以下代码:
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
