[python][asyncio] 争议模块 asyncio 的基础学习---未完待续
今天这个先来了解一下asyncio的 在python3中的使用,
1,python3 的异步协程和python2以及3的老版本有比较大的差别
2, 目前 我本地的python3 在pip install -m asyncio 之后就能运行这些程序 ,反倒是anaconda 下边的 jupyter book 运行出错
3,通过 task的for 循环模式和 gather 来完成
# python 协程 # multiproc, asyncio import time import asyncio '''1 def crawl_page(url): print('crawling{}'.format(url)) sleep_time=int(url.split('_')[-1]) time.sleep(sleep_time) print('OK {}'.format(url)) def main(urls): for url in urls: crawl_page(url) %time main(['url_1','url_2','url_3','url_4']) ''' '''2 to_be_verified,暂时无法运行,等等更新版本和包 async def crawl_page(url): print('crawling {}'.format(url)) sleep_time=int(url.split('_')[-1]) await asyncio.sleep(sleep_time) print('OK {}'.format(url)) async def main(urls): for url in urls: await crawl_page(url) #%time asyncio.run(main(['url_1','url_2','url_3','url_4'])) ''' # '''3 import asyncio async def crawl_page(url): print('crawling{}'.format(url)) sleep_time=int(url.split('_')[-1]) await asyncio.sleep(sleep_time) print('OK {}'.format(url)) async def main(urls): tasks=[asyncio.create_task(crawl_page(url)) for url in urls] for url in urls: await crawl_page(url) #%time asyncio.run(main(['url_1','url_2','url_3','url_4'])) # 通过 tasks =[asyncio.create_task(crawl_page(url))for url in urls] ''' # tasks 另一种做法: # await asyncio.gather(*tasks) #'''4 async def crawl_page(url): print('crawling{}'.format(url)) sleep_time=int(url.split('_')[-1]) await asyncio.sleep(sleep_time) print('OK {}'.format(url)) async def main(urls): tasks=[asyncio.create_task(crawl_page(url)) for url in urls] await asyncio.gather(*tasks) #%time asyncio.run(main(['url_1','url_2','url_3','url_4'])) #''' # 解密协成 # 多个函数并行执行,可以通过设置 task.cancle 来设置 # 注意 return exception的情况 # queue的使用 , 生产和消费模型

浙公网安备 33010602011771号