欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 淺談Python協(xié)程asyncio

淺談Python協(xié)程asyncio

熱門標簽:高德地圖標注是免費的嗎 無錫客服外呼系統(tǒng)一般多少錢 老人電話機器人 洪澤縣地圖標注 百度地圖標注位置怎么修改 大連crm外呼系統(tǒng) 梅州外呼業(yè)務系統(tǒng) 地圖標注視頻廣告 北京電信外呼系統(tǒng)靠譜嗎

一、協(xié)程

官方描述;
協(xié)程是子例程的更一般形式。 子例程可以在某一點進入并在另一點退出。 協(xié)程則可以在許多不同的點上進入、退出和恢復。 它們可通過 async def 語句來實現(xiàn)。 參見 PEP 492。

  • 協(xié)程不是計算機內(nèi)部提供的,不像進程、線程,由電腦本身提供,它是由程序員人為創(chuàng)造的, 實現(xiàn)函數(shù)異步執(zhí)行。
  • 協(xié)程(Coroutine),也可以被稱為微線程,是一種用戶太內(nèi)的上下文切換技術,其實就是通過一個線程實現(xiàn)代碼塊相互切換執(zhí)行。看上去像子程序,但執(zhí)行過程中,在子程序內(nèi)部可中斷,然后轉(zhuǎn)而執(zhí)行別的子程序,在適當?shù)臅r候再返回來接著執(zhí)行。例如:
# 需要python3.7+
import asyncio


async def main():
    print('hello')
    await asyncio.sleep(1)
    print('world')

asyncio.run(main())

# 打印 "hello",等待 1 秒,再打印 "world"

注意:簡單地調(diào)用一個協(xié)程并不會使其被調(diào)度執(zhí)行,

直接main() 調(diào)用會有問題:

RuntimeWarning: coroutine 'main' was never awaited
  main()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

def func1():
    print(1)
    ...
    print(2)
    
def func2():
    print(3)
    ...
    print(4)

func1()
func2() 

# 結(jié)果:1 2 3 4

實現(xiàn)協(xié)程的方法:

  • greenlet,早期模塊【不建議使用】
  • yield關鍵字,它是python的生成器,具有保存狀態(tài),切換到其他函數(shù)去執(zhí)行,再切換回原函數(shù)的功能。
  • asyncio裝飾器(python3.4引入)
  • async、await 關鍵字(python3.5)【推薦使用】

1.1 greenlet實現(xiàn)協(xié)程

# 第三方模塊,因此需要安裝

pip install greenlet
from greenlet import greenlet


def func1():
    print(1)
    gr2.switch()
    print(2)
    gr2.switch()


def func2():
    print(3)
    gr1.switch()
    print(4)


gr1 = greenlet(func1)
gr2 = greenlet(func2)

gr1.switch()

# 結(jié)果:1 3 2 4

1.2 yield關鍵字

def func1():
    yield 1
    yield from func2()
    yield 2


def func2():
    yield 3
    yield 4

f1 = func1()
for item in f1:
    print(item)
    
# 結(jié)果:1 3 2 4

1.3 asynico裝飾器

python3.4 及之后版本支持

DeprecationWarning: “@coroutine” decorator is deprecated since Python 3.8, use “async def”
翻譯:@coroutine"裝飾器自Python 3.8起已棄用,請使用"async def"代替

所以這個也不支持。

import asyncio

@asyncio.coroutine
def func1():
    print(1)
    yield from asyncio.sleep(2)  # 遇到IO耗時操作,自動切換到tasks中其他任務,比如:網(wǎng)絡IO,下載圖片
    print(2)

@asyncio.coroutine
def func2():
    print(3)
    yield from asyncio.sleep(2)  # 遇到IO耗時操作,自動切換到tasks中其他任務,比如:網(wǎng)絡IO,下載圖片
    print(4)

tasks = [
    asyncio.ensure_future(func1()),
    asyncio.ensure_future(func2())
]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

# 結(jié)果: 1 3 2 4

1.4 async await 關鍵字

import asyncio


async def func1():
    print(1)
    await asyncio.sleep(2)  # 遇到IO耗時操作,自動切換到tasks中其他任務,比如:網(wǎng)絡IO,下載圖片
    print(2)


async def func2():
    print(3)
    await asyncio.sleep(2)  # 遇到IO耗時操作,自動切換到tasks中其他任務,比如:網(wǎng)絡IO,下載圖片
    print(4)

tasks = [
    asyncio.ensure_future(func1()),
    asyncio.ensure_future(func2())
]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

二、協(xié)程的意義

充分利用線程。在一個線程中如果遇到IO等待時間線程不會一直等待,利用空閑時間再去干點其他事情。

以下載三張圖片為例:

普通方式(同步)下載:

import time
import requests

def download_image(url, img_name):
    print("開始下載:", url)
    # 發(fā)送網(wǎng)絡請求,下載圖片
    response = requests.get(url)
    print("下載完成")
    # 圖片保存到本地文件
    file_name = str(img_name) + '.png'
    with open(file_name, mode='wb') as file:
        file.write(response.content)

if __name__ == '__main__':
    start = time.time()
    url_list = [
        'https://tse4-mm.cn.bing.net/th/id/OIP.866vRxQ8QvyDsrUuXiu7qwHaNK?w=182h=324c=7o=5pid=1.7',
        'https://tse2-mm.cn.bing.net/th/id/OIP.HUcWtoYPG-z2pu4ityajbAHaKQ?w=182h=252c=7o=5pid=1.7',
        'https://tse2-mm.cn.bing.net/th/id/OIP.MvncR0-Pt9hVxKTdrvD9dAHaNK?w=182h=324c=7o=5pid=1.7',
        'https://tse1-mm.cn.bing.net/th/id/OIP._nGloaeMWbL7NB7Lp6SnXQHaLH?w=182h=273c=7o=5pid=1.7',
        ]
    img_name = 1
    for item in url_list:
        download_image(item, img_name)
        img_name += 1
    end = time.time()
    print(end - start)
    
 # 最終時間:7.25s

協(xié)程方式(異步)下載:

import aiohttp
import asyncio
import time


async def fetch(session, url):
    print("發(fā)送請求:", url)

    async with session.get(url, verify_ssl=False) as response:
        content = await response.content.read()
        file_name = url.rsplit('_')[-1]
        # print(file_name)
        with open(file_name, mode='wb') as file_object:
            file_object.write(content)
        print("下載完成")


async def main():
    async with aiohttp.ClientSession() as session:
        url_list = [
            'https://www3.autoimg.cn/newsdfs/g26/M02/35/A9/120x90_0_autohomecar__ChsEe12AXQ6AOOH_AAFocMs8nzU621.jpg',
            'https://www3.autoimg.cn/newsdfs/g26/M02/35/A9/120x90_0_autohomecar__ChsEe12AXQ6AOOH_AAFocMs8nzU621.jpg',
            'https://www3.autoimg.cn/newsdfs/g26/M02/35/A9/120x90_0_autohomecar__ChsEe12AXQ6AOOH_AAFocMs8nzU621.jpg',
            'https://www3.autoimg.cn/newsdfs/g26/M02/35/A9/120x90_0_autohomecar__ChsEe12AXQ6AOOH_AAFocMs8nzU621.jpg',
        ]
        tasks = [asyncio.ensure_future(fetch(session, url)) for url in url_list]
        await asyncio.wait(tasks)

if __name__ == '__main__':
    start = time.time()
    asyncio.get_event_loop().run_until_complete(main())
    end = time.time()
    print(end - start)
    
# 結(jié)果:0.05s

到此這篇關于淺談Python協(xié)程的文章就介紹到這了,更多相關Python協(xié)程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python協(xié)程asyncio異步編程筆記分享
  • 深入理解python協(xié)程
  • 淺談Python協(xié)程
  • python協(xié)程用法實例分析
  • javascript實現(xiàn)鼠標拖尾特效
  • JavaScript循環(huán)遍歷的24個方法,你都知道嗎
  • JavaScript實現(xiàn)簡單拖拽效果
  • JavaScript 數(shù)組去重詳解
  • 簡單談談JavaScript變量提升
  • Python 協(xié)程與 JavaScript 協(xié)程的對比

標簽:泉州 怒江 安慶 洛陽 長春 清遠 吉林 岳陽

巨人網(wǎng)絡通訊聲明:本文標題《淺談Python協(xié)程asyncio》,本文關鍵詞  淺談,Python,協(xié)程,asyncio,淺談,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Python協(xié)程asyncio》相關的同類信息!
  • 本頁收集關于淺談Python協(xié)程asyncio的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    午夜精品国产更新| 亚洲av网址在线| 色欲一区二区三区精品a片| 亚洲精品一区二区三区精华液 | 中文字幕资源站| 欧美变态凌虐bdsm| 麻豆国产精品一区二区三区| 一本色道综合久久欧美日韩精品 | 在线免费观看日本欧美| 亚洲欧美偷拍卡通变态| 99久久国产综合精品女不卡| 欧美色图亚洲视频| 亚洲女同ⅹxx女同tv| 99精品欧美一区| 欧美在线999| 亚洲一区二区免费视频| 国产免费a级片| 日韩一区二区电影| 美国毛片一区二区三区| 熟女少妇内射日韩亚洲| 日本一区二区三区电影| 成人午夜碰碰视频| 欧美专区日韩专区| 亚洲成人综合视频| 91精品人妻一区二区三区蜜桃欧美| 日韩欧美激情一区| 韩国精品主播一区二区在线观看| 亚洲女人毛茸茸高潮| 国产精品久久久久毛片软件| 99久久精品国产网站| 欧美日韩久久久一区| 日产国产高清一区二区三区| 性欧美一区二区| 国产精品久久久一本精品| 99精品欧美一区二区三区小说 | 成人综合在线观看| 欧美自拍偷拍午夜视频| 性感美女久久精品| 免费观看a级片| 中文字幕在线一区| 亚洲无人区码一码二码三码| 日韩欧美色电影| 国产成人在线电影| 欧美色成人综合| 男女视频一区二区| 天天鲁一鲁摸一摸爽一爽| 一区二区三区在线影院| 极品粉嫩小仙女高潮喷水久久| 国产日本一区二区| 91蜜桃在线观看| 欧美第一区第二区| 成人美女视频在线看| 欧美日韩国产高清一区| 精品综合久久久久久8888| 精品国产欧美日韩不卡在线观看| 亚洲国产aⅴ成人精品无吗| 欧美 日韩 成人| 亚洲激情校园春色| 国产精品20p| 亚洲精品久久久久久国产精华液| 人妻精品久久久久中文字幕| 国产精品电影院| 中文人妻一区二区三区| 中文字幕一区二区三区四区不卡| 日本一卡二卡在线| 国产精品嫩草影院com| 国产+高潮+白浆+无码| 亚洲国产高清在线观看视频| yjizz视频| 中文字幕日韩av资源站| 亚洲欧美日本一区| 亚洲人成精品久久久久久| 大黑人交xxx极品hd| 亚洲婷婷在线视频| 国产伦理片在线观看| 亚洲高清久久久| 男人的天堂久久久| 久久国产精品免费| 欧美日韩激情在线| 成人综合婷婷国产精品久久蜜臀| 日韩视频123| 被黑人猛躁10次高潮视频| 久久久蜜臀国产一区二区| 2018国产精品| 亚洲欧美综合另类在线卡通| 精品人伦一区二区三电影 | 亚洲一区二区三区黄色| 欧美国产禁国产网站cc| 中文字幕日韩三级片| 亚洲欧美一区二区不卡| 精品女人久久久| 美女网站视频久久| 欧美精品高清视频| k8久久久一区二区三区| 久久久激情视频| 中文字幕一区二区人妻在线不卡| 樱花影视一区二区| 欧美人禽zoz0强交| 国产激情91久久精品导航| 日韩欧美另类在线| 日本一区二区在线免费观看| 亚洲柠檬福利资源导航| 999精品视频在线观看播放| 免费看日韩精品| 91精品国产色综合久久ai换脸| 99久久精品一区| 国产精品久久久久久久久免费相片| 亚洲国产av一区| 蜜臀精品久久久久久蜜臀| 91.com在线观看| 9.1在线观看免费| 一区二区三区.www| 日本二三区不卡| av在线一区二区三区| 亚洲国产激情av| 久草福利资源在线| 国产九色精品成人porny | 国产精品嫩草影院俄罗斯| 国产最新精品精品你懂的| 日韩美女一区二区三区四区| 波多野结衣一二三区| 亚洲成a人v欧美综合天堂下载| 欧美性猛交xxxxxxxx| 91毛片在线观看| 一区二区三区欧美视频| 欧美一a一片一级一片| 99精品视频中文字幕| 日韩美女视频一区二区| 我家有个日本女人| 不卡av在线免费观看| 成人免费一区二区三区视频 | 亚洲色图在线视频| 色老汉一区二区三区| 97超碰欧美中文字幕| 一区二区不卡在线播放 | 欧美写真视频网站| 色诱av手机版| 午夜免费欧美电影| 日韩一区二区在线播放| 欧美亚一区二区三区| 久久不见久久见免费视频1| 久久在线免费观看| 免费看一级黄色| 成人高清免费观看| 一区二区三区日本| 欧美一区二区啪啪| 非洲一级黄色片| 国产精品性做久久久久久| 国产精品久久久久久久久免费丝袜| 欧美亚洲日本在线| 真实乱偷全部视频| 日韩主播视频在线| 久久婷婷国产综合精品青草| 99热在线观看精品| 91视频91自| 日韩影视精彩在线| 国产亚洲成aⅴ人片在线观看| 三级黄色在线观看| 91视视频在线观看入口直接观看www| 亚洲高清在线精品| 2022国产精品视频| 亚洲色图综合区| 动漫美女无遮挡免费| 久久99久久99小草精品免视看| 中文字幕久久午夜不卡| 欧美在线制服丝袜| 香蕉网在线播放| 欧美久久久一区| 最近日本中文字幕| 国产精品1区2区| 一区二区视频在线| 精品国产免费一区二区三区香蕉| 波兰性xxxxx极品hd| 国产精品91av| 激情成人午夜视频| 一区二区三区四区在线免费观看| 日韩精品最新网址| 美女福利视频在线观看| 国产大学生视频| 国产成人三级在线观看| 亚洲一区二区三区四区五区黄 | 国产免费a级片| 国产伦精品一区二区三区免费| 悠悠色在线精品| 久久综合色之久久综合| 91福利精品第一导航| 能免费看av的网站| 91免费看片在线观看| 精品亚洲免费视频| 亚洲国产精品久久一线不卡| 久久精品人人爽人人爽| 欧美日韩国产一级片| 香蕉久久久久久久| 精品无码人妻少妇久久久久久| 国产麻豆91精品| 视频一区视频二区中文| 国产精品国产自产拍高清av | 91啪在线观看| 激情图区综合网| 天堂av在线一区|