前言
源码:
Lib/concurrent/futures/thread.py
Lib/concurrent/futures/process.py
concurrent.futures:
异步执行可以由 ThreadPoolExecutor 或 ProcessPoolExecutor 来实现
两者都是实现抽像类 Executor 定义的接口
ThreadPoolExecutor
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : $file_name.py
# @Author : BenLam
# @Link : https://www.cnblogs.com/BenLam/
import requests
from concurrent.futures import ThreadPoolExecutor
lis = [
"https://www.baidu.com",
"https://www.jd.com",
"https://www.cnblogs.com",
]
def response(url):
_res = requests.get(url)
print(_res.url)
# return _res
print("--- 主线程 ---")
executor = ThreadPoolExecutor(max_workers=3)
for url in lis:
future = executor.submit(response, url)
restful = future.running()
print(restful)
print("--- 主线程 | 结束 ---")
"""
打印:
--- 主线程 ---
True
True
True
--- 主线程 | 结束 ---
https://www.jd.com/
https://www.cnblogs.com/
https://www.baidu.com/
[Finished in 1.9s]
"""