2

我有以下代码:

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

有时,pool.map这只适用于上述 20 个中的 18 个titles。这会导致程序挂起。

有没有办法做类似的事情:

try:
    pool.map(...)

因此,如果地图失败,功能会继续吗?我如何将这种异常处理构建到多处理中?

基本上,如果线程没有在x时间内完成,我想杀死它。

4

1 回答 1

3

我的建议是(最好)修复run_update_procedure超时或以其他方式表现得更好(这里有一个可能提供帮助的潜在片段),而不是挂起,切换到multiprocessing.Pool'sapply_asyncmap_async,并timeoutAsyncResult.get().

例子:

pool = Pool(10)
result = pool.map_async(run_update_procedure, titles_to_update)
try:
    updates = result.get(timeout=x)
except TimeoutError:
    # handle timeout
于 2013-10-27T19:42:51.123 回答