欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中使用asyncio實現(xiàn)異步IO實例分析

 更新時間:2021年02月26日 08:32:50   作者:小妮淺淺  
在本篇文章里小編給大家整理的是一篇關(guān)于python中使用asyncio實現(xiàn)異步IO實例分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。

1、說明

Python實現(xiàn)異步IO非常簡單,asyncio是Python 3.4版本引入的標(biāo)準(zhǔn)庫,直接內(nèi)置了對異步IO的支持。

asyncio的編程模型就是一個消息循環(huán)。我們從asyncio模塊中直接獲取一個EventLoop的引用,然后把需要執(zhí)行的協(xié)程扔到EventLoop中執(zhí)行,就實現(xiàn)了異步IO。

2、實例

import asyncio
@asyncio.coroutine
def 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()

知識點擴(kuò)展:

數(shù)據(jù)流(Streams)

數(shù)據(jù)流(Streams)是用于處理網(wǎng)絡(luò)連接的高階異步/等待就緒(async/await-ready)原語,可以在不使用回調(diào)和底層傳輸協(xié)議的情況下發(fā)送和接收數(shù)據(jù)。

以下是一個用asyncio實現(xiàn)的TCP回顯客戶端:

import asyncio

async 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!'))

到此這篇關(guān)于python中使用asyncio實現(xiàn)異步IO實例分析的文章就介紹到這了,更多相關(guān)python中使用asyncio實現(xiàn)異步IO內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Pandas索引和選取數(shù)據(jù)方法詳解

    利用Pandas索引和選取數(shù)據(jù)方法詳解

    使用Pandas做數(shù)據(jù)分析的時候,用的最多的功能恐怕就是對于數(shù)據(jù)集的索引,選組數(shù)據(jù)子集。Pandas庫提供了很多非常實用的方法,了解并熟練使用這些方法而不是用for循環(huán)的方法將會事半功倍。在這一篇文章中,我們將著重介紹這些方法
    2021-10-10
  • 解決django無法訪問本地static文件(js,css,img)網(wǎng)頁里js,cs都加載不了

    解決django無法訪問本地static文件(js,css,img)網(wǎng)頁里js,cs都加載不了

    這篇文章主要介紹了解決django無法訪問本地static文件(js,css,img)網(wǎng)頁里js,cs都加載不了的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python實現(xiàn)高斯(Gauss)迭代法的例子

    python實現(xiàn)高斯(Gauss)迭代法的例子

    今天小編就為大家分享一篇python實現(xiàn)高斯(Gauss)迭代法的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python web框架之tornado的使用

    Python web框架之tornado的使用

    tornado是一個用Python語言寫成的Web服務(wù)器兼Web應(yīng)用框架,本文主要介紹了Python web框架之tornado的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • python腳本框架webpy入門安裝及應(yīng)用創(chuàng)建

    python腳本框架webpy入門安裝及應(yīng)用創(chuàng)建

    這篇文章主要為大家介紹了python腳本框架web.py的入門安裝及應(yīng)用創(chuàng)建過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Pycharm連接遠(yuǎn)程服務(wù)器過程圖解

    Pycharm連接遠(yuǎn)程服務(wù)器過程圖解

    這篇文章主要介紹了Pycharm連接遠(yuǎn)程服務(wù)器過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • django中ORM模型常用的字段的使用方法

    django中ORM模型常用的字段的使用方法

    這篇文章主要介紹了django中ORM模型常用的字段的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

    在Mac OS上部署Nginx和FastCGI以及Flask框架的教程

    這篇文章主要介紹了在Mac OS上部署Nginx和FastCGI以及Flask框架的教程,Flask是Python下一個極簡的web開放框架,需要的朋友可以參考下
    2015-05-05
  • Python編寫檢測數(shù)據(jù)庫SA用戶的方法

    Python編寫檢測數(shù)據(jù)庫SA用戶的方法

    這篇文章主要介紹了Python編寫檢測數(shù)據(jù)庫SA用戶的方法,需要的朋友可以參考下
    2014-07-07
  • python global的創(chuàng)建和修改實例講解

    python global的創(chuàng)建和修改實例講解

    在本篇文章里小編給大家整理了一篇關(guān)于python global的創(chuàng)建和修改實例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-09-09

最新評論