chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python協(xié)程之a(chǎn)syncio簡單使用

冬至配餃子 ? 來源:繆斯之子 ? 作者:肖新苗 ? 2022-08-29 17:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄

簡單的使用

相同和同步的對比

順下載的例子

1.簡單的使用

import asyncio

async def req1():
await asyncio.sleep(1)
print('執(zhí)行 req1')
return 1


async def req2():
print('執(zhí)行 req2')
return 2


async def main():
list = [req1(), req2()]
res = await asyncio.gather(*list)
'''
雖然,req2是先執(zhí)行完的,
但是res返回值的順序, 還是跟list順序保持一致
'''
print(res)


asyncio.get_event_loop().run_until_complete(main())
'''
結果:
執(zhí)行 req2
執(zhí)行 req1
[1, 2]
'''

2.相似和同時的對比

測試2個請求,同時觸發(fā)請求執(zhí)行的時間短,我是延遲讓請求延遲返回

import asyncio
import time

import requests
from aiohttp import ClientSession


async def fetch(session, param):
async with session.get as resp:
data = await resp.json()
return data


async def req_async():
async with ClientSession() as session:
return await asyncio.gather(fetch(session, 2), \
fetch(session, 1))


def req():
session = requests.Session()
p1, p2 = 2, 1
return [
session.get.json(),
session.get.json()
]


async def main():
s1 = time.time()
v1 = await req_async()
s2 = time.time()
v2 = req()
print(f'異步請求時間:{round(s2-s1,1)}s \
響應結果:{[v["args"]["a"] for v in v1]}')
print(f'同步請求時間:{round(time.time()-s2,1)}s \
響應結果:{[v["args"]["a"] for v in v2]}')


if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(main())
'''
結果:
異步請求時間:3.2s 響應結果:['2', '1']
同步請求時間:7.9s 響應結果:['2', '1']
'''


3.相關下載的例子

看似請求、極大的文件限制、意外保存

async def download(sem, page: int, folder: str, session: ClientSession):
async with sem:
async with session.get(url, params={'page': page}) as resp:
async with aiofiles.open(f'{folder}/{page}.json', mode='w') as f:
await f.write(await resp.text())
return page


async def main():
# 請求url參數(shù)列表
url_pages = range(1, 5)
# 創(chuàng)建文件夾data
folder_name = 'data'
if not os.path.exists(folder_name):
os.makedirs(folder_name)
# 限制并發(fā)數(shù)量
sem = asyncio.Semaphore(50)
# 異步請求,并保存到文件
async with ClientSession(connector=TCPConnector(limit=5),
timeout=ClientTimeout(300)) as session:
tasks = []
for page in url_pages:
tasks.append(download(sem, page, folder_name, session))
result = await asyncio.gather(*tasks)
exp = set(url_pages)
act = set(result)
if exp == act:
print(f'全部下載完成')
else:
print(f'未成功:{exp - act},成功:{exp & act}')


if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(main())




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90022
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    解析Linux的進程、線程和協(xié)程

    )輕量級:相對于進程,線程的創(chuàng)建和切換開銷較小。 (3)同步與通信:線程之間需要通過同步機制(如互斥鎖、信號量)來保證數(shù)據(jù)的一致性。 協(xié)程(Coroutine) 協(xié)程是一種輕量級的用戶態(tài)線程,它們
    發(fā)表于 12-22 11:00

    沒有專利的opencv-python 版本

    4.8.x 及以上核心版(無專利、安裝簡單、功能全); 若需擴展功能,搭配 opencv-contrib-python-headless(無頭版),避免引入專利模塊; 無需擔心“專利繞過”,官方核心版本身無
    發(fā)表于 12-13 12:37

    NICE協(xié)處理器接口信號解讀--以demo為例

    的復位信號。 nice_active表示nice協(xié)處理器是否正在工作,但該信號在上層文件中未例化,如下圖所示。 nice_mem_holdup信號在e203_lsu_ctrl.v文件中用于覆蓋cpu
    發(fā)表于 10-31 08:01

    利用Verdi調試協(xié)處理器的實現(xiàn)步驟

    本次給大家介紹的是利用Verdi調試協(xié)處理器的實現(xiàn)步驟。 有時為了觀察協(xié)處理器運行情況,需要查看協(xié)處理器接口的信號波形,此時可以用Verdi來查看主處理器發(fā)給協(xié)處理器的自定義指令以進一
    發(fā)表于 10-30 08:26

    MD5信息摘要算法實現(xiàn)二(基于蜂鳥E203協(xié)處理器)

    本設計首先根據(jù)MD5協(xié)處理器的功能設計MD5算法IP核,軟件部分使用串口程序助手進行64位加解密結果的輸出,E203內核根據(jù)地址取出對應的數(shù)據(jù),使用相關的指令進行傳輸顯示。通過NICE接口將MD5協(xié)
    發(fā)表于 10-30 07:54

    基于E203 NICE協(xié)處理器擴展指令

    )和rd(讀)傳遞,不需要讀取存儲器的數(shù)據(jù)(這樣可精簡化協(xié)處理器的控制代碼) 在官方案例的基礎上 新增一個簡單的add指令 c= a + b(主要是將內聯(lián)匯編弄清楚,使用rs2)
    發(fā)表于 10-21 14:35

    基于E203 NICE協(xié)處理器擴展指令2.0

    實現(xiàn)功能:基于官方提供的demo nice的硬件代碼,設計一個基于e203 nice協(xié)處理的加法器。 NICE協(xié)處理器理論學習 nice協(xié)處理器的作用主要是用于控制通路的管理 去年國一的協(xié)
    發(fā)表于 10-21 10:39

    termux調試python猜數(shù)字游戲

    用termux做一個猜數(shù)字游戲 下面是在Termux中創(chuàng)建猜數(shù)字游戲的步驟及完整實現(xiàn)方案,結合Python實現(xiàn)(最適配Termux環(huán)境): ? 一、環(huán)境準備(Termux基礎配置) 1.
    發(fā)表于 08-29 17:15

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發(fā)環(huán)境的完整指南 一、Termux基礎環(huán)境準備 Termux是一款無需root即可在安卓設備上運行的Linux終端
    發(fā)表于 08-29 07:06

    【HZ-T536開發(fā)板免費體驗】4、使用藍牙模塊讀取小米溫濕度計的數(shù)據(jù)

    upgrade bluez 安裝好工具后,可以先使用工具簡單的測試下,例如掃描設備什么的。這里我們就跳過了。 然后,我們需要創(chuàng)建一個虛擬環(huán)境,好安裝腳本需要的依賴,這里我們考慮使用Python腳本來抓取ble
    發(fā)表于 08-25 22:16

    python入門圣經(jīng)-高清電子書(建議下載)

    和Pygal 等強大的Python 庫和工具介紹,以及列表、字典、if 語句、類、文件與異常、代碼測試等內容; 第二部分將理論付諸實踐,講解如何開發(fā)三個項目,包括簡單Python 2D 游戲開發(fā)如何利用數(shù)據(jù)
    發(fā)表于 04-10 16:53

    LuatOS協(xié)程深度解析:小白也能10分鐘學會,代碼效率直接起飛!

    嵌入式開發(fā)如何兼顧效率與簡潔?LuatOS協(xié)程給出完美答案!它用類線程的語法封裝異步邏輯,讓多任務開發(fā)像單線程一樣簡單。本文用圖文并茂的方式拆解協(xié)程原理,10分鐘帶你輕松入門! ? LuatOS
    的頭像 發(fā)表于 04-10 15:23 ?619次閱讀
    LuatOS<b class='flag-5'>協(xié)</b>程深度解析:小白也能10分鐘學會,代碼效率直接起飛!

    10分鐘上手寫代碼,LuatOS協(xié)程輕松掌握!

    10分鐘學會LuatOS協(xié)程,從此你的程序也能像通勤族利用碎片時間一樣游刃有余。現(xiàn)在就去動手試一試,開啟異步編程新體驗! 寫給第一次聽說協(xié)程的你?: 別怕!協(xié)程不是復雜概念,看完這篇,10分鐘就能
    的頭像 發(fā)表于 04-10 15:18 ?660次閱讀
    10分鐘上手寫代碼,LuatOS<b class='flag-5'>協(xié)</b>程輕松掌握!

    進程、線程、協(xié)程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!

    :\"我去關火!\"( yield 控制權) 代碼示例(Python異步爬蟲): python import asyncio import aiohttp ? async def fetch
    發(fā)表于 03-26 09:27

    零基礎入門:如何在樹莓派上編寫和運行Python程序?

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單Python程序。什么是
    的頭像 發(fā)表于 03-25 09:27 ?2025次閱讀
    零基礎入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b>程序?