您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python中使用asyncio实现异步IO实例分析

51自学网 2021-10-30 22:54:18
  python
这篇教程python中使用asyncio实现异步IO实例分析写得很实用,希望能帮到您。

1、说明

Python实现异步IO非常简单,asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。

asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。

2、实例

import asyncio@asyncio.coroutinedef wget(host):  print('wget %s...' % host)  connect = asyncio.open_connection(host, 80)  reader, writer = yield from connect  header = 'GET / HTTP/1.0/r/nHost: %s/r/n/r/n' % host  writer.write(header.encode('utf-8'))  yield from writer.drain()  while True:    line = yield from reader.readline()    if line == b'/r/n':      break    print('%s header > %s' % (host, line.decode('utf-8').rstrip()))  # Ignore the body, close the socket  writer.close()loop = asyncio.get_event_loop()tasks = [wget(host) for host in ['www.sina.com.cn', 'www.sohu.com', 'www.163.com']]loop.run_until_complete(asyncio.wait(tasks))loop.close()

知识点扩展:

数据流(Streams)

数据流(Streams)是用于处理网络连接的高阶异步/等待就绪(async/await-ready)原语,可以在不使用回调和底层传输协议的情况下发送和接收数据。

以下是一个用asyncio实现的TCP回显客户端:

import asyncioasync def tcp_echo_client(message):  reader, writer = await asyncio.open_connection(    '127.0.0.1', 8888)  print(f'Send: {message!r}')  writer.write(message.encode())  data = await reader.read(100)  print(f'Received: {data.decode()!r}')  print('Close the connection')  writer.close()  await writer.wait_closed()asyncio.run(tcp_echo_client('Hello World!'))

到此这篇关于python中使用asyncio实现异步IO实例分析的文章就介绍到这了,更多相关python中使用asyncio实现异步IO内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


浅析Python模块之间的相互引用问题
Python爬取网站图片并保存的实现示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。