concurrent

1 例子

1.1 简单例子

import time
from xlib.util import concurrent

def fun(i__):
    time.sleep(2)
    return (str(i__) + 'hi')


pool = concurrent.ThreadPoolExecutor(20)

future_tasks = []
for i in range(100):
    future = pool.submit(fun,i)
    future_tasks.append(future)

task_iter = concurrent.as_completed(future_tasks)

# 完成列表
done_list = []
for future in task_iter:
    done_list.append(future.result())

print len(done_list)
print done_list

1.2 异常及重试

1.3 输出异常的 original_task

future_tasks 改为 dict

1.4 使用 with 语句(推荐)

使用 with 语句将创建一个上下文管理器,该管理器可确保在完成后通过隐式调用 executor.shutdown() 函数来清理掉所有线程或进程。

Last updated