执行多线程多进程后得到的Future操作

多进程submit

当执行 executor.submit 方法之后
我们会得到一个 Future 对象:

这些个 Future 对象封装了
一些异步操作的方法
常常会用的有这么几个:

1、 done() :
如果调用已被取消或正常结束那么返回 True 。
2、result(timeout=None):
返回调用返回的结果。
3、add_done_callback(fn):
当 future 被取消或完成运行时,将会调用 fn 方法。
4、as_completed(fs):
当 future 执行完之后会返回一个迭代器。

此代码开启最多 5 个线程执行
每一次 submit 就会得到一个 Future
future 里存放的的爬取数据
接下来可以对 future 做进一步操作

add_done_callback 方法

比如当它执行完成的时候去回调一个 done 方法。
要实现此功能就要使用 future 的
add_done_callback 方法

可以看到
每次 submit 都会调用到自定义的 done 方法

放入队列等待执行

将每次的 future 放入队列等待执行
这时每个 future 里就是我们爬取的数据了
就可以分别对其进行数据解析,
得到我们想要的数据
将数据存入 Excel 、数据库等等