设置默认线程池
from concurrent.futures import ThreadPoolExecutor
exe = ThreadPoolExecutor(2)
asyncio.get_event_loop().set_default_executor(exe)
同时下载多文件,碰到阻塞的函数则用run_in_executor来新开线程跳过阻塞
# coding=utf-8
import asyncio
import os
import requests
async def downOne(loop, url):
name = os.path.basename(url)
print("downOne:start {}".format(name))
# loop = asyncio.get_event_loop()
# requests.get(url)
result = await loop.run_in_executor(None, requests.get, url)
print("downOne:middle {}".format(name))
if result.status_code == 200:
with open(name, "wb") as fp:
# fp.write(result.content)
r = await loop.run_in_executor(None, fp.write, result.content)
print("downOne: r = {}".format(r))
print("downOne:endxx {}".format(name))
return "