python 協程學習筆記

目錄

python 協程 通俗理解

Python 的 asyncio 協程,最擅長的是:

批量下載文件的例子:

協程的優勢:


python 協程 通俗理解

def my_coroutine():print("開始")x = yield 1print("拿到了:", x)yield 2co = my_coroutine()
print(next(co))      # 輸出:開始 -> 1
print(co.send(99))   # 輸出:拿到了:99 -> 2

開始
1
拿到了:99
2
這說明我們可以把“外部值”傳進函數中間,并讓它繼續從“上次停下的地方”執行。

Python 的 asyncio 協程,最擅長的是:

適合的 I/O 類型舉例
網絡 I/O請求網頁、數據庫、接口
Socket I/O聊天服務器、RPC、推送
異步文件操作(需特殊庫)

aiofilesrun_in_executor()

批量下載文件的例子:

import asyncio
import aiohttp
import timeasync def fetch(session, url):print(f"開始下載 {url}")async with session.get(url) as response:text = await response.text()print(f"{url} 下載完畢,長度:{len(text)}")async def main():urls = ['https://www.example.com'] * 5async with aiohttp.ClientSession() as session:tasks = [fetch(session, url) for url in urls]await asyncio.gather(*tasks)start = time.time()
asyncio.run(main())
print("耗時:", time.time() - start)

協程的優勢:

對比項多線程協程
內存開銷較高(每個線程有棧空間)極低(協程本質是狀態機)
上下文切換操作系統級別,重用戶態,輕
啟動成本
并發數量受線程數限制(數百)可成千上萬個協程
異常處理分散,不好控更集中統一
適合場景CPU密集型任務I/O密集型任務(網絡、數據庫等)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88309.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88309.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88309.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【學習筆記】蒙特卡洛仿真與matlab實現

概述 20 世紀 40 年代,由于電子計算機的出現, 借助計算機可以實現大量的隨機抽樣試驗,為利用隨機試驗方法解決實際問題提供了便捷。 非常具代表性的例子是, 美國在第二次世界大戰期間研制原子彈的“曼哈頓計劃”中,為了…

HTTP/3.x協議詳解:基于QUIC的下一代Web傳輸協議

一、HTTP/3協議概述 HTTP/3是超文本傳輸協議(HTTP)的第三個正式版本,由IETF(互聯網工程任務組)于2022年正式標準化(RFC 9114)。其核心創新在于完全基于QUIC協議替代傳統TCP,結合UDP…

【SQL】使用UPDATE修改表字段的時候,遇到1054 或者1064的問題怎么辦?

我在使用python連接sql修改表格的時間字段的時候,遇到這樣一個問題:ProgrammingError: (pymysql.err.ProgrammingError) (1064, “You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the ri…

【字節跳動】數據挖掘面試題0013:怎么做男女二分類問題, 從抖音 app 提供的內容中。

文章大綱 ?? 一、問題定義與數據基礎數據源及預處理:?? 二、特征工程方案1. 文本特征2. 視覺特征3. 音頻與行為特征4. 上下文特征?? 三、模型選型與訓練1. 基礎模型對比2. 多模態融合模型3. 訓練技巧?? 四、評估與優化策略1. 評估指標2. 典型問題優化3. 算法偏差控制?…

HTTP請求走私漏洞

一、漏洞定義與核心原理HTTP請求走私(HTTP Request Smuggling)是一種利用前端服務器(如代理、負載均衡器)與后端服務器在解析HTTP請求時的不一致性,繞過安全機制并執行惡意操作的攻擊技術。其核心在于混淆請求邊界&…

Javaweb - 10.1 Servlet

目錄 Servlet 簡介 動態資源和靜態資源 Servlet 簡介 Servlet 開發流程 目標 開發過程 開發一個 web 類型的 module 開發一個 form 表單 開發一個 UserServlet 在 web..xml 為 userServlet 配置請求路徑 Edit Configurations 啟動項目 完! Servlet 簡介…

手機能用酒精擦嗎?

對于電視、電腦屏幕來說,為了避免反光、改善顯示效果,會在屏幕表面覆上一層“抗反射涂層”。不同廠商設計的涂層材料并不相同,酒精作為良好的溶劑,確實會損壞可溶的涂層。手機作為觸控產品,通常會在屏幕表面增加“疏水…

【圖像處理基石】圖像超分辨率有哪些研究進展值得關注?

近年來,圖像超分辨率(SR)領域在深度學習技術的推動下取得了顯著進展,尤其在模型架構優化、計算效率提升和真實場景適應性等方面涌現出諸多創新。以下是基于最新研究的核心進展梳理: 一、高效大圖像處理:像素…

Windows系統下WSL從C盤遷移方案

原因:一開始裝WSL的時候放在了C盤,這下好了,跑了幾個深度學習模型訓練后,C盤快滿了,這可怎么辦?可愁壞了。沒關系,山人自有妙計。我們將WSL遷移到D盤或者E盤呀。一.遷移操作步驟前期準備&#x…

金融時間序列機器學習訓練前的數據格式驗證系統設計與實現

金融時間序列機器學習訓練前的數據格式驗證系統設計與實現 前言 在機器學習項目中,數據質量是決定模型成功的關鍵因素。特別是在金融時間序列分析領域,原始數據往往需要經過復雜的預處理才能用于模型訓練。本文將詳細介紹一個完整的數據格式驗證系統&…

cocos2dx3.x項目升級到xcode15以上的iconv與duplicate symbols報錯問題

cocos2dx3.x項目升級xcode15以上后會有幾處報錯。1. CCFontAtlas.cpp文件下的iconv與iconv_close的報錯。修改如下:// iconv_close(_iconv);iconv_close((iconv_t)_iconv);iconv((iconv_t)_iconv, (char**)&pin, &inLen, &pout, &outLen); /…

HTTP/3.0的連接遷移使用連接ID來標識連接為什么可以做到連接不會中斷

一定要結合圖文一起理解!! 文章目錄文字描述傳統方式:HTTP/2 基于 TCP 的連接(就像打固定電話)HTTP/3 基于 QUIC 的連接遷移(就像用帶“通話ID”的手機)總結一下圖文詳解HTTP2.0傳統方式&#x…

讓工作效率翻倍的終極神器之被工具定義的編程時代(VS Code + GitHub Copilot + JetBrains全家桶)

目錄一、引言:被工具定義的編程時代二、背景:傳統開發模式的效率瓶頸2.1 認知負荷過載2.2 工具鏈斷層三、效率翻倍工具鏈深度解析3.1 智能代碼編輯器:從打字機到智能助手3.2 版本控制大師:Git的隱藏技能3.3 自動化腳本&#xff1a…

docker部署單機gitlab

環境準備: 證書: acme.sh --issue --dns dns_ali -d gitlab.chandz.com -d *.chandz.comcp /root/.acme.sh/gitlab.chandz.com_ecc/* /data/docker-data-volume/gitlab/ssl/目錄: mkdir -p /data/docker-data-volume/gitlab cd /data/docker-…

【K8S】在 Kubernetes 上配置安裝 Nginx Ingress 控制器指南

文章目錄架構概覽先決條件部署方案選擇方案一:手動 YAML 部署核心組件詳解方案二:Helm快速部署(生產推薦)驗證部署DNS配置策略方案A:單域名映射方案B:通配符映射(推薦)應用實戰&…

SHA-256算法詳解——Github工程結合示例和動畫演示

近日筆者在學習區塊鏈的相關知識,接觸到SHA-256算法,這里做一個知識梳理和總結。 強烈推薦大家自行去學習下面鏈接github上的工程,作者的動畫演示和解釋做的非常出色,邏輯非常清晰,B站搬運的對應的油管的講解視頻也放…

C語言模塊化編程思維以及直流電機控制(第四天)

👨?💻個人主頁:開發者-削好皮的Pineapple! 👨?💻 hello 歡迎 點贊👍 收藏? 留言📝 加關注?! 👨?💻 本文由 削好皮的Pineapple! 原創 👨?&#x1f4…

【PTA】數據結構與算法0001:1025 反轉鏈表

文章大綱寫在前面測試用例ac代碼學習代碼知識點小結寫在前面 實現思路 結構體封裝數據 根據order重新排序k區間值迭代翻轉 n整除k,則最后地址輸出"-1"非整除,最后剩余區間,原序輸出。最后地址輸出"-1" 題目有難度&…

深入解析 .NET 泛型:從原理到實戰優化

在現代軟件開發中,代碼復用性和性能優化是開發者永恒的追求。.NET 泛型作為一項強大的語言特性,不僅能夠幫助我們消除重復代碼,還能顯著提升代碼的類型安全性和運行效率。本文將帶你全面了解 .NET 泛型,從基本概念到高級用法&…

Excel 處理軟件 內容復制工具:工作表批量復制 + 合并拆分簡潔操作零門檻

各位辦公小能手們!今天給你們介紹一款超牛的軟件——Excel內容復制工具。軟件下載地址安裝包 這可是專門為了讓Excel數據處理效率蹭蹭往上漲而設計的輔助軟件呢!它的主要功能可多啦,能批量復制工作表,還能把好多表格合并到同一個…