Python中如何使用asyncio

发布时间:2020-11-06 09:13:33 作者:小新
来源:亿速云 阅读:157

这篇文章将为大家详细讲解有关Python中如何使用asyncio,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

最简单的使用

import asyncioasync def myfun(i):
   print('start {}th'.format(i))
   await asyncio.sleep(1)
   print('finish {}th'.format(i))loop = asyncio.get_event_loop()
   myfun_list = (myfun(i) for i in range(10))
   loop.run_until_complete(asyncio.gather(*myfun_list))

这样运行,10次等待总共只等待了1秒。

上面代码一些约定俗成的用法记住就好,如

另一种常见的使用方式

上面是第一种常见的用法,下面是另外一种

import asyncioasync def myfun(i):
   print('start {}th'.format(i))
   await asyncio.sleep(1)
   print('finish {}th'.format(i))loop = asyncio.get_event_loop()myfun_list = [asyncio.ensure_future(myfun(i)) for i in range(10)]loop.run_until_complete(asyncio.wait(myfun_list))

这种用法和上面一种的不同在于后面调用的是asyncio.gather还是asyncio.wait,当前看成完全等价即可,所以平时使用用上面哪种都可以。

上面是最常看到的两种使用方式,这里列出来保证读者在看其他文章时不会发蒙。

另外,二者其实是有细微差别的

一个问题

与之前学过的多线程、多进程相比,asyncio模块有一个非常大的不同:传入的函数不是随心所欲

import asyncioimport requestsfrom bs4 import BeautifulSoupasync def get_title(a):
   url = 'https://movie.douban.com/top250?start={}&filter='.format(a*25)
   r = requests.get(url)
   soup = BeautifulSoup(r.content, 'html.parser')
   lis = soup.find('ol', class_='grid_view').find_all('li')
   for li in lis:
       title = li.find('span', class_="title").text
       print(title)loop = asyncio.get_event_loop()fun_list = (get_title(i) for i in range(10))loop.run_until_complete(asyncio.gather(*fun_list))

依然不会异步执行。

关于Python中如何使用asyncio就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. Python中asyncio模块的深入讲解
  2. Python中asyncio怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python asyncio cio

上一篇:phpredis集群使用案例

下一篇:python中yield from语法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》