Python 高级并发3
Posted September 30, 2015
本篇主要讲案例, 两个使用Concurrent.futures实现的并发, 一个是多线程, 一个是多进程。
多进程
用在计算密集的确定Long Number是否为质数
的例子
多线程
用在多线程访问HTTP链接, I/O密集的时候
以上内容修改自docs.python.org
ThreadPoolExecutor
和 ProcessPoolExecutor
都是concurrent.futures.Executor
的子类。 那么他们都有submit
、map
、shutdown
方法
**submit(fn, *args, kwargs)
异步执行函数
参数:
fn 为需要异步执行的函数
args kwargs 函数的参数
map(func, *iterables, timeout=None)¶
此map函数和python自带的map函数功能类似,只不过concurrent模块的map函数从迭代器获得参数后异步执行。并且,每一个异步操作,能用timeout参数来设置超时时间,timeout的值可以是int或float型,如果操作timeout的话,会raisesTimeoutError。如果timeout参数不指定的话,则不设置超时间。
func 为需要异步执行的函数
*iterables 可以是一个能迭代的对象,例如列表等。每一次func执行,会从iterables中取参数。
timeout 每个异步操作的超时时间
shutdown(wait=True)
此函数用于释放异步执行操作后的系统资源。