成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python3 使用 asyncio 代替線程

bergwhite / 3714人閱讀

摘要:提供了協(xié)程專用的關鍵字還提供了庫來進行異步非阻塞的操作異步非阻塞的操作沒有老師檢查我也不知道自己算不算完全懂了就不做無用功嘗試說得通俗易懂了想要從原理開始理解的話推薦的文檔我為何使用來代替?zhèn)鹘y(tǒng)線程進行操作由于時間主要耗費在操作上其他操作并發(fā)

python3提供了協(xié)程專用的關鍵字async await, 還提供了asyncio庫, 來進行異步非阻塞的io操作
異步非阻塞的io操作?

沒有老師檢查我也不知道自己算不算完全懂了, 就不做無用功嘗試說得通俗易懂了.
想要從原理開始理解的話, 推薦tornado的文檔

我為何使用asyncio來代替?zhèn)鹘y(tǒng)線程進行io操作?

由于時間主要耗費在io操作上, 其他操作并發(fā)需求不大.

不用規(guī)定并行多少, 比較方便穩(wěn)定.

熟悉tornado工作原理

舉例

并行訪問某網頁十次

import asyncio
import requests
loop = asyncio.get_event_loop()
async def t():                                                    
    get = lambda:requests.get("http://baidu.com")
    temp = await loop.run_in_executor(None, get)
    print(temp)   
loop.run_until_complete(asyncio.gather(*[t() for i in range(10)]))

上面這幾行代碼就可以完成這些操作了.

loop = asyncio.get_event_loop() 協(xié)程本身并不具備并行能力, 但是有了這個事件loop就可以進行并行io請求

get = lambda:requests.get("http://baidu.com")
temp = await loop.run_in_executor(None, get)

一般函數是無法被await修飾的, 必須用api封裝一下(感覺很像threading), 我之所以再封裝一次get, 是因為run_in_executor傳參數比較坑, 不支持**kwargs

loop.run_until_complete(asyncio.gather(*[t() for i in range(10)]))

run_until_complete這個api是指運行內容物直到結束(api如其名), gather是把任務組合到一起, 如果*的部分有迷惑的話, 你寫asycio.gather(t(),t(), t()...)也是可以的.

おわり.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/41341.html

相關文章

  • Python協(xié)程(真才實學,想學的進來)

    摘要:所以與多線程相比,線程的數量越多,協(xié)程性能的優(yōu)勢越明顯。值得一提的是,在此過程中,只有一個線程在執(zhí)行,因此這與多線程的概念是不一樣的。 真正有知識的人的成長過程,就像麥穗的成長過程:麥穗空的時候,麥子長得很快,麥穗驕傲地高高昂起,但是,麥穗成熟飽滿時,它們開始謙虛,垂下麥芒。 ——蒙田《蒙田隨筆全集》 上篇論述了關于python多線程是否是雞肋的問題,得到了一些網友的認可,當然也有...

    lykops 評論0 收藏0
  • Python中的并發(fā)處理之使用asyncio

    摘要:并發(fā)用于制定方案,用來解決可能但未必并行的問題。在協(xié)程中使用需要注意兩點使用鏈接的多個協(xié)程最終必須由不是協(xié)程的調用方驅動,調用方顯式或隱式在最外層委派生成器上調用函數或方法。對象可以取消取消后會在協(xié)程當前暫停的處拋出異常。 導語:本文章記錄了本人在學習Python基礎之控制流程篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、了解asyncio...

    tuniutech 評論0 收藏0
  • tornado6與python3.7 異步新姿勢

    摘要:這是我重新復習的原因放棄了之前自己實現(xiàn)的全面擁抱的這個改動是非常大的而且閱讀的源碼可以發(fā)現(xiàn)其中大部分函數都支持了類型檢驗和返回值提示值得閱讀 廢話不多說,直接上代碼 __auth__ = aleimu __doc__ = 學習tornado6.0+ 版本與python3.7+ import time import asyncio import tornado.gen import t...

    maxmin 評論0 收藏0
  • Tornado 4.3文檔翻譯: 用戶指南-協(xié)程

    摘要:譯者說于年月日發(fā)布,該版本正式支持的關鍵字,并且用舊版本編譯同樣可以使用這兩個關鍵字,這無疑是一種進步。其次,這是最后一個支持和的版本了,在后續(xù)的版本了會移除對它們的兼容。 譯者說 Tornado 4.3于2015年11月6日發(fā)布,該版本正式支持Python3.5的async/await關鍵字,并且用舊版本CPython編譯Tornado同樣可以使用這兩個關鍵字,這無疑是一種進步。其次...

    SimonMa 評論0 收藏0

發(fā)表評論

0條評論

bergwhite

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<