码迷,mamicode.com
首页 > 其他好文 > 详细

【12.7】asyncio的同步和通信

时间:2019-08-21 00:23:24      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:exit   rest   def   return   import   span   tin   run   until   

 1 import asyncio
 2 from asyncio import Lock, Queue
 3 cache = {}
 4 lock = Lock()
 5 
 6 
 7 async def get_stuff(url):
 8     # lock.acquire()是一个协程
 9     # await lock.acquire()
10     # with await lock
11     # Lock实现了__enter__和__exit__可以使用with语法
12     async with lock:
13         if url in cache:
14             return cache[url]
15         stuff = await aiohttp.request(GET, url)
16         cache[url] = stuff
17         return stuff
18 
19 
20 async def parse_stuff():
21     stuff = await get_stuff()
22     # do some parsing
23 
24 
25 async def use_stuff():
26     stuff = await get_stuff()
27     # use stuff to do something interesting
28 
29 
30 if __name__ == __main__:
31     tasks = [parse_stuff(), use_stuff()]
32     loop = asyncio.get_event_loop()
33     loop.run_until_complete(asyncio.wait(tasks))

【12.7】asyncio的同步和通信

标签:exit   rest   def   return   import   span   tin   run   until   

原文地址:https://www.cnblogs.com/zydeboke/p/11386261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!