asyncio, aiohttp爬虫 -> 这里写了一些原理和使用asyncio需要注意的东西, 对asyncio 有些基础的可以看看
python asyncio aiohttp 异步下载 完整例子
用 c / c++ 分别实现的简单线程池 ->对线程池实现有兴趣的可以看看
正文:
Executor是一个抽象类,子类:
ThreadPoolExecutor
和ProcessPoolExecutor ,一个线程池,一个进程池.
future对象:在未来的某一时刻完成操作的对象.
submit方法可以返回一个future对象,此对象直接返回,等线程函数执行完后把return的数据再set_result到future对象中;
下面实现了submit, map 与 as_completed的差别 , 下面的例子中都没有使用with ,实际使用时需要调用shutdown , 或用with
#线程执行的函数
def add(n1,n2):
v = n1 + n2
print('add :', v , ', tid:',threading.currentThread().ident)
time.sleep(n1)
return v
#通过submit把需要执行的函数扔进线程池中.
#submit 直接返回一个future对象
ex = ThreadPoolExecutor(max_workers=3) #制定最多运行N个线