我有以下代码:
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
,并向timeout
提供AsyncResult.get()
参数。
例子:
pool = Pool(10)
result = pool.map_async(run_update_procedure, titles_to_update)
try:
updates = result.get(timeout=x)
except TimeoutError:
# handle timeout
关于python - Pool.map只是挂起—如何进行异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19622514/